// export def_base_level , def_amount_of_people , def_skill_level , def_starting_resources , def_shipments_density , def_shared_vision , def_people_respawning , def_amount_of_apemen ; export is_depot , number_of_breastworks , number_of_people , skill_level , starting_crates , starting_resources , shipments_density , morale_decreasing_time , amount_of_apemen , amount_of_siberit , respawning_time_min , respawning_time_max , respawning_time_delay_min , respawning_time_delay_max ; export Side_Teams , Teams ; export Side_Positions , Side_Nations , Team_Game ; export Position_Sides ; export depot_def , breastworks_def , start_def , normal_oil_deposits_locations , extra_oil_deposits_locations , normal_sib_deposits_locations , extra_sib_deposits_locations , battle_flags_id ; export def_difficulty_level , difficulty_level ; export amdestroyedBuildings ; export AIDepotDest ; export randomedColors ; export sideP1 , sideP2 , sideP3 , sideP4 ; var commander ; var global_units , global_defined , soldiers_created ; var neng , nsci , nmech , nsol ; export def_Tech_Level , def_upgrade_tl , tech_level , initial_level ; function read_multiplayer_and_game_parameters ; var i ; begin
   0: LD_INT 0
   2: PPUSH
   3: PPUSH
// if Multiplayer then
   4: LD_OWVAR 4
   8: IFFALSE 62
// begin Your_Side := mp_player_side ;
  10: LD_ADDR_OWVAR 2
  14: PUSH
  15: LD_OWVAR 7
  19: ST_TO_ADDR
// Side_Positions := mp_sides_positions ;
  20: LD_ADDR_EXP 25
  24: PUSH
  25: LD_OWVAR 17
  29: ST_TO_ADDR
// Side_Teams := mp_sides_teams ;
  30: LD_ADDR_EXP 23
  34: PUSH
  35: LD_OWVAR 15
  39: ST_TO_ADDR
// Side_Nations := mp_sides_nations ;
  40: LD_ADDR_EXP 26
  44: PUSH
  45: LD_OWVAR 16
  49: ST_TO_ADDR
// Teams := mp_teams ;
  50: LD_ADDR_EXP 24
  54: PUSH
  55: LD_OWVAR 12
  59: ST_TO_ADDR
// end else
  60: GO 205
// begin Your_Side := 1 ;
  62: LD_ADDR_OWVAR 2
  66: PUSH
  67: LD_INT 1
  69: ST_TO_ADDR
// Side_Positions := [ 1 , 2 , 0 , 0 , 0 , 3 , 0 , 4 ] ;
  70: LD_ADDR_EXP 25
  74: PUSH
  75: LD_INT 1
  77: PUSH
  78: LD_INT 2
  80: PUSH
  81: LD_INT 0
  83: PUSH
  84: LD_INT 0
  86: PUSH
  87: LD_INT 0
  89: PUSH
  90: LD_INT 3
  92: PUSH
  93: LD_INT 0
  95: PUSH
  96: LD_INT 4
  98: PUSH
  99: EMPTY
 100: LIST
 101: LIST
 102: LIST
 103: LIST
 104: LIST
 105: LIST
 106: LIST
 107: LIST
 108: ST_TO_ADDR
// Side_Teams := [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
 109: LD_ADDR_EXP 23
 113: PUSH
 114: LD_INT 0
 116: PUSH
 117: LD_INT 0
 119: PUSH
 120: LD_INT 0
 122: PUSH
 123: LD_INT 0
 125: PUSH
 126: LD_INT 0
 128: PUSH
 129: LD_INT 0
 131: PUSH
 132: LD_INT 0
 134: PUSH
 135: LD_INT 0
 137: PUSH
 138: EMPTY
 139: LIST
 140: LIST
 141: LIST
 142: LIST
 143: LIST
 144: LIST
 145: LIST
 146: LIST
 147: ST_TO_ADDR
// Side_Nations := [ 2 , 2 , 0 , 0 , 0 , 3 , 0 , 3 ] ;
 148: LD_ADDR_EXP 26
 152: PUSH
 153: LD_INT 2
 155: PUSH
 156: LD_INT 2
 158: PUSH
 159: LD_INT 0
 161: PUSH
 162: LD_INT 0
 164: PUSH
 165: LD_INT 0
 167: PUSH
 168: LD_INT 3
 170: PUSH
 171: LD_INT 0
 173: PUSH
 174: LD_INT 3
 176: PUSH
 177: EMPTY
 178: LIST
 179: LIST
 180: LIST
 181: LIST
 182: LIST
 183: LIST
 184: LIST
 185: LIST
 186: ST_TO_ADDR
// Teams := [ [ 1 , 2 ] ] ;
 187: LD_ADDR_EXP 24
 191: PUSH
 192: LD_INT 1
 194: PUSH
 195: LD_INT 2
 197: PUSH
 198: EMPTY
 199: LIST
 200: LIST
 201: PUSH
 202: EMPTY
 203: LIST
 204: ST_TO_ADDR
// end ; for i := 1 to 8 do
 205: LD_ADDR_VAR 0 2
 209: PUSH
 210: DOUBLE
 211: LD_INT 1
 213: DEC
 214: ST_TO_ADDR
 215: LD_INT 8
 217: PUSH
 218: FOR_TO
 219: IFFALSE 257
// if Multiplayer_GetPlayerIsSpec ( i ) then
 221: LD_VAR 0 2
 225: PPUSH
 226: CALL_OW 530
 230: IFFALSE 255
// Side_Positions := Replace ( Side_Positions , i , 0 ) ;
 232: LD_ADDR_EXP 25
 236: PUSH
 237: LD_EXP 25
 241: PPUSH
 242: LD_VAR 0 2
 246: PPUSH
 247: LD_INT 0
 249: PPUSH
 250: CALL_OW 1
 254: ST_TO_ADDR
 255: GO 218
 257: POP
 258: POP
// Position_Sides := [ 0 , 0 , 0 , 0 , 0 , 0 ] ;
 259: LD_ADDR_EXP 28
 263: PUSH
 264: LD_INT 0
 266: PUSH
 267: LD_INT 0
 269: PUSH
 270: LD_INT 0
 272: PUSH
 273: LD_INT 0
 275: PUSH
 276: LD_INT 0
 278: PUSH
 279: LD_INT 0
 281: PUSH
 282: EMPTY
 283: LIST
 284: LIST
 285: LIST
 286: LIST
 287: LIST
 288: LIST
 289: ST_TO_ADDR
// for i := 1 to 8 do
 290: LD_ADDR_VAR 0 2
 294: PUSH
 295: DOUBLE
 296: LD_INT 1
 298: DEC
 299: ST_TO_ADDR
 300: LD_INT 8
 302: PUSH
 303: FOR_TO
 304: IFFALSE 351
// if Side_Positions [ i ] then
 306: LD_EXP 25
 310: PUSH
 311: LD_VAR 0 2
 315: ARRAY
 316: IFFALSE 349
// Position_Sides := Replace ( Position_Sides , Side_Positions [ i ] , i ) ;
 318: LD_ADDR_EXP 28
 322: PUSH
 323: LD_EXP 28
 327: PPUSH
 328: LD_EXP 25
 332: PUSH
 333: LD_VAR 0 2
 337: ARRAY
 338: PPUSH
 339: LD_VAR 0 2
 343: PPUSH
 344: CALL_OW 1
 348: ST_TO_ADDR
 349: GO 303
 351: POP
 352: POP
// Team_Game := Side_Teams [ your_side ] ;
 353: LD_ADDR_EXP 27
 357: PUSH
 358: LD_EXP 23
 362: PUSH
 363: LD_OWVAR 2
 367: ARRAY
 368: ST_TO_ADDR
// if Multiplayer then
 369: LD_OWVAR 4
 373: IFFALSE 455
// begin def_amount_of_people := GetMultiplayerSetting ( 1 ) ;
 375: LD_ADDR_EXP 2
 379: PUSH
 380: LD_INT 1
 382: PPUSH
 383: CALL_OW 426
 387: ST_TO_ADDR
// def_skill_level := GetMultiplayerSetting ( 2 ) ;
 388: LD_ADDR_EXP 3
 392: PUSH
 393: LD_INT 2
 395: PPUSH
 396: CALL_OW 426
 400: ST_TO_ADDR
// def_starting_resources := GetMultiplayerSetting ( 3 ) ;
 401: LD_ADDR_EXP 4
 405: PUSH
 406: LD_INT 3
 408: PPUSH
 409: CALL_OW 426
 413: ST_TO_ADDR
// def_shared_vision := GetMultiplayerSetting ( 10 ) ;
 414: LD_ADDR_EXP 6
 418: PUSH
 419: LD_INT 10
 421: PPUSH
 422: CALL_OW 426
 426: ST_TO_ADDR
// def_people_respawning := GetMultiplayerSetting ( 13 ) ;
 427: LD_ADDR_EXP 7
 431: PUSH
 432: LD_INT 13
 434: PPUSH
 435: CALL_OW 426
 439: ST_TO_ADDR
// def_difficulty_level := GetMultiplayerSetting ( 17 ) ;
 440: LD_ADDR_EXP 37
 444: PUSH
 445: LD_INT 17
 447: PPUSH
 448: CALL_OW 426
 452: ST_TO_ADDR
// end else
 453: GO 499
// begin Randomize ;
 455: CALL_OW 10
// def_amount_of_people = 3 ;
 459: LD_ADDR_EXP 2
 463: PUSH
 464: LD_INT 3
 466: ST_TO_ADDR
// def_difficulty_level = 3 ;
 467: LD_ADDR_EXP 37
 471: PUSH
 472: LD_INT 3
 474: ST_TO_ADDR
// def_skill_level = 3 ;
 475: LD_ADDR_EXP 3
 479: PUSH
 480: LD_INT 3
 482: ST_TO_ADDR
// def_shared_vision = 1 ;
 483: LD_ADDR_EXP 6
 487: PUSH
 488: LD_INT 1
 490: ST_TO_ADDR
// def_starting_resources = 0 ;
 491: LD_ADDR_EXP 4
 495: PUSH
 496: LD_INT 0
 498: ST_TO_ADDR
// end ; number_of_people := [ 9 , 12 , 15 , 24 ] [ def_amount_of_people + 1 ] ;
 499: LD_ADDR_EXP 11
 503: PUSH
 504: LD_INT 9
 506: PUSH
 507: LD_INT 12
 509: PUSH
 510: LD_INT 15
 512: PUSH
 513: LD_INT 24
 515: PUSH
 516: EMPTY
 517: LIST
 518: LIST
 519: LIST
 520: LIST
 521: PUSH
 522: LD_EXP 2
 526: PUSH
 527: LD_INT 1
 529: PLUS
 530: ARRAY
 531: ST_TO_ADDR
// skill_level := [ 3 , 5 , 6 , 7 ] [ def_skill_level + 1 ] ;
 532: LD_ADDR_EXP 12
 536: PUSH
 537: LD_INT 3
 539: PUSH
 540: LD_INT 5
 542: PUSH
 543: LD_INT 6
 545: PUSH
 546: LD_INT 7
 548: PUSH
 549: EMPTY
 550: LIST
 551: LIST
 552: LIST
 553: LIST
 554: PUSH
 555: LD_EXP 3
 559: PUSH
 560: LD_INT 1
 562: PLUS
 563: ARRAY
 564: ST_TO_ADDR
// starting_resources := [ [ 400 , 100 , 100 ] , [ 600 , 100 , 100 ] , [ 800 , 100 , 100 ] , [ 1000 , 100 , 100 ] ] [ def_starting_resources + 1 ] ;
 565: LD_ADDR_EXP 14
 569: PUSH
 570: LD_INT 400
 572: PUSH
 573: LD_INT 100
 575: PUSH
 576: LD_INT 100
 578: PUSH
 579: EMPTY
 580: LIST
 581: LIST
 582: LIST
 583: PUSH
 584: LD_INT 600
 586: PUSH
 587: LD_INT 100
 589: PUSH
 590: LD_INT 100
 592: PUSH
 593: EMPTY
 594: LIST
 595: LIST
 596: LIST
 597: PUSH
 598: LD_INT 800
 600: PUSH
 601: LD_INT 100
 603: PUSH
 604: LD_INT 100
 606: PUSH
 607: EMPTY
 608: LIST
 609: LIST
 610: LIST
 611: PUSH
 612: LD_INT 1000
 614: PUSH
 615: LD_INT 100
 617: PUSH
 618: LD_INT 100
 620: PUSH
 621: EMPTY
 622: LIST
 623: LIST
 624: LIST
 625: PUSH
 626: EMPTY
 627: LIST
 628: LIST
 629: LIST
 630: LIST
 631: PUSH
 632: LD_EXP 4
 636: PUSH
 637: LD_INT 1
 639: PLUS
 640: ARRAY
 641: ST_TO_ADDR
// respawning_time_min := [ 0 0$0 , 4 4$00 , 2 2$0 ] [ def_people_respawning + 1 ] ;
 642: LD_ADDR_EXP 19
 646: PUSH
 647: LD_INT 0
 649: PUSH
 650: LD_INT 8400
 652: PUSH
 653: LD_INT 4200
 655: PUSH
 656: EMPTY
 657: LIST
 658: LIST
 659: LIST
 660: PUSH
 661: LD_EXP 7
 665: PUSH
 666: LD_INT 1
 668: PLUS
 669: ARRAY
 670: ST_TO_ADDR
// respawning_time_max := [ 0 0$0 , 9 9$00 , 5 5$0 ] [ def_people_respawning + 1 ] ;
 671: LD_ADDR_EXP 20
 675: PUSH
 676: LD_INT 0
 678: PUSH
 679: LD_INT 18900
 681: PUSH
 682: LD_INT 10500
 684: PUSH
 685: EMPTY
 686: LIST
 687: LIST
 688: LIST
 689: PUSH
 690: LD_EXP 7
 694: PUSH
 695: LD_INT 1
 697: PLUS
 698: ARRAY
 699: ST_TO_ADDR
// respawning_time_delay_min := [ 0 0$0 , 0 0$30 , 0 0$20 ] [ def_people_respawning + 1 ] ;
 700: LD_ADDR_EXP 21
 704: PUSH
 705: LD_INT 0
 707: PUSH
 708: LD_INT 1050
 710: PUSH
 711: LD_INT 700
 713: PUSH
 714: EMPTY
 715: LIST
 716: LIST
 717: LIST
 718: PUSH
 719: LD_EXP 7
 723: PUSH
 724: LD_INT 1
 726: PLUS
 727: ARRAY
 728: ST_TO_ADDR
// respawning_time_delay_max := [ 0 0$0 , 1 1$00 , 0 0$40 ] [ def_people_respawning + 1 ] ;
 729: LD_ADDR_EXP 22
 733: PUSH
 734: LD_INT 0
 736: PUSH
 737: LD_INT 2100
 739: PUSH
 740: LD_INT 1400
 742: PUSH
 743: EMPTY
 744: LIST
 745: LIST
 746: LIST
 747: PUSH
 748: LD_EXP 7
 752: PUSH
 753: LD_INT 1
 755: PLUS
 756: ARRAY
 757: ST_TO_ADDR
// difficulty_level := [ 5 , 7 , 8 , 10 ] [ def_difficulty_level + 1 ] ;
 758: LD_ADDR_EXP 38
 762: PUSH
 763: LD_INT 5
 765: PUSH
 766: LD_INT 7
 768: PUSH
 769: LD_INT 8
 771: PUSH
 772: LD_INT 10
 774: PUSH
 775: EMPTY
 776: LIST
 777: LIST
 778: LIST
 779: LIST
 780: PUSH
 781: LD_EXP 37
 785: PUSH
 786: LD_INT 1
 788: PLUS
 789: ARRAY
 790: ST_TO_ADDR
// end ;
 791: LD_VAR 0 1
 795: RET
// function init_map ; var i , j ; begin
 796: LD_INT 0
 798: PPUSH
 799: PPUSH
 800: PPUSH
// depot_def := [ [ 60 , 105 , 0 ] , [ 105 , 1 , 3 ] , [ 121 , 119 , 5 ] , [ 22 , 1 , 3 ] ] ;
 801: LD_ADDR_EXP 29
 805: PUSH
 806: LD_INT 60
 808: PUSH
 809: LD_INT 105
 811: PUSH
 812: LD_INT 0
 814: PUSH
 815: EMPTY
 816: LIST
 817: LIST
 818: LIST
 819: PUSH
 820: LD_INT 105
 822: PUSH
 823: LD_INT 1
 825: PUSH
 826: LD_INT 3
 828: PUSH
 829: EMPTY
 830: LIST
 831: LIST
 832: LIST
 833: PUSH
 834: LD_INT 121
 836: PUSH
 837: LD_INT 119
 839: PUSH
 840: LD_INT 5
 842: PUSH
 843: EMPTY
 844: LIST
 845: LIST
 846: LIST
 847: PUSH
 848: LD_INT 22
 850: PUSH
 851: LD_INT 1
 853: PUSH
 854: LD_INT 3
 856: PUSH
 857: EMPTY
 858: LIST
 859: LIST
 860: LIST
 861: PUSH
 862: EMPTY
 863: LIST
 864: LIST
 865: LIST
 866: LIST
 867: ST_TO_ADDR
// for i in depot_def do
 868: LD_ADDR_VAR 0 2
 872: PUSH
 873: LD_EXP 29
 877: PUSH
 878: FOR_IN
 879: IFFALSE 953
// start_def := start_def ^ [ [ ShiftX ( i [ 1 ] , i [ 3 ] , 10 ) , ShiftY ( i [ 2 ] , i [ 3 ] , 5 ) ] ] ;
 881: LD_ADDR_EXP 31
 885: PUSH
 886: LD_EXP 31
 890: PUSH
 891: LD_VAR 0 2
 895: PUSH
 896: LD_INT 1
 898: ARRAY
 899: PPUSH
 900: LD_VAR 0 2
 904: PUSH
 905: LD_INT 3
 907: ARRAY
 908: PPUSH
 909: LD_INT 10
 911: PPUSH
 912: CALL_OW 272
 916: PUSH
 917: LD_VAR 0 2
 921: PUSH
 922: LD_INT 2
 924: ARRAY
 925: PPUSH
 926: LD_VAR 0 2
 930: PUSH
 931: LD_INT 3
 933: ARRAY
 934: PPUSH
 935: LD_INT 5
 937: PPUSH
 938: CALL_OW 273
 942: PUSH
 943: EMPTY
 944: LIST
 945: LIST
 946: PUSH
 947: EMPTY
 948: LIST
 949: ADD
 950: ST_TO_ADDR
 951: GO 878
 953: POP
 954: POP
// end ;
 955: LD_VAR 0 1
 959: RET
// function set_shared_visions_and_alliances ; var i , j ; begin
 960: LD_INT 0
 962: PPUSH
 963: PPUSH
 964: PPUSH
// if def_shared_vision then
 965: LD_EXP 6
 969: IFFALSE 1013
// begin ChangeSideFog ( sideP2 , sideP1 ) ;
 971: LD_EXP 43
 975: PPUSH
 976: LD_EXP 42
 980: PPUSH
 981: CALL_OW 343
// ChangeSideFog ( sideP3 , sideP1 ) ;
 985: LD_EXP 44
 989: PPUSH
 990: LD_EXP 42
 994: PPUSH
 995: CALL_OW 343
// ChangeSideFog ( sideP4 , sideP1 ) ;
 999: LD_EXP 45
1003: PPUSH
1004: LD_EXP 42
1008: PPUSH
1009: CALL_OW 343
// end ; end ;
1013: LD_VAR 0 1
1017: RET
// function prepare_people ( count , cl , x , y , r ) ; var i , j , un ; begin
1018: LD_INT 0
1020: PPUSH
1021: PPUSH
1022: PPUSH
1023: PPUSH
// result := [ ] ;
1024: LD_ADDR_VAR 0 6
1028: PUSH
1029: EMPTY
1030: ST_TO_ADDR
// for i := 1 to count do
1031: LD_ADDR_VAR 0 7
1035: PUSH
1036: DOUBLE
1037: LD_INT 1
1039: DEC
1040: ST_TO_ADDR
1041: LD_VAR 0 1
1045: PUSH
1046: FOR_TO
1047: IFFALSE 1443
// begin uc_direction := Rand ( 0 , 5 ) ;
1049: LD_ADDR_OWVAR 24
1053: PUSH
1054: LD_INT 0
1056: PPUSH
1057: LD_INT 5
1059: PPUSH
1060: CALL_OW 12
1064: ST_TO_ADDR
// if commander then
1065: LD_LOC 1
1069: IFFALSE 1178
// begin hc_name := mp_sides_players_names [ uc_side ] ;
1071: LD_ADDR_OWVAR 26
1075: PUSH
1076: LD_OWVAR 19
1080: PUSH
1081: LD_OWVAR 20
1085: ARRAY
1086: ST_TO_ADDR
// PrepareHuman ( Rand ( 1 , 2 ) , cl , skill_level + 2 ) ;
1087: LD_INT 1
1089: PPUSH
1090: LD_INT 2
1092: PPUSH
1093: CALL_OW 12
1097: PPUSH
1098: LD_VAR 0 2
1102: PPUSH
1103: LD_EXP 12
1107: PUSH
1108: LD_INT 2
1110: PLUS
1111: PPUSH
1112: CALL_OW 380
// hc_importance := 105 ;
1116: LD_ADDR_OWVAR 32
1120: PUSH
1121: LD_INT 105
1123: ST_TO_ADDR
// commander := false ;
1124: LD_ADDR_LOC 1
1128: PUSH
1129: LD_INT 0
1131: ST_TO_ADDR
// if Multiplayer then
1132: LD_OWVAR 4
1136: IFFALSE 1176
// begin hc_gallery := MULTIAVATARS ;
1138: LD_ADDR_OWVAR 33
1142: PUSH
1143: LD_STRING MULTIAVATARS
1145: ST_TO_ADDR
// hc_face_number := Multiplayer_GetPlayerSideNum ( uc_side ) ;
1146: LD_ADDR_OWVAR 34
1150: PUSH
1151: LD_OWVAR 20
1155: PPUSH
1156: CALL_OW 525
1160: ST_TO_ADDR
// hc_sex := Multiplayer_GetPlayerSex ( uc_side ) ;
1161: LD_ADDR_OWVAR 27
1165: PUSH
1166: LD_OWVAR 20
1170: PPUSH
1171: CALL_OW 526
1175: ST_TO_ADDR
// end ; end else
1176: GO 1241
// begin hc_name :=  ;
1178: LD_ADDR_OWVAR 26
1182: PUSH
1183: LD_STRING 
1185: ST_TO_ADDR
// PrepareHuman ( rand ( 1 , 2 ) , cl , skill_level ) ;
1186: LD_INT 1
1188: PPUSH
1189: LD_INT 2
1191: PPUSH
1192: CALL_OW 12
1196: PPUSH
1197: LD_VAR 0 2
1201: PPUSH
1202: LD_EXP 12
1206: PPUSH
1207: CALL_OW 380
// hc_importance := 0 ;
1211: LD_ADDR_OWVAR 32
1215: PUSH
1216: LD_INT 0
1218: ST_TO_ADDR
// if Multiplayer then
1219: LD_OWVAR 4
1223: IFFALSE 1241
// begin hc_gallery :=  ;
1225: LD_ADDR_OWVAR 33
1229: PUSH
1230: LD_STRING 
1232: ST_TO_ADDR
// hc_face_number := 0 ;
1233: LD_ADDR_OWVAR 34
1237: PUSH
1238: LD_INT 0
1240: ST_TO_ADDR
// end ; end ; un := CreateHuman ;
1241: LD_ADDR_VAR 0 9
1245: PUSH
1246: CALL_OW 44
1250: ST_TO_ADDR
// if global_defined then
1251: LD_LOC 3
1255: IFFALSE 1395
// begin if ( cl = class_soldier ) then
1257: LD_VAR 0 2
1261: PUSH
1262: LD_INT 1
1264: EQUAL
1265: IFFALSE 1285
// j := i + soldiers_created else
1267: LD_ADDR_VAR 0 8
1271: PUSH
1272: LD_VAR 0 7
1276: PUSH
1277: LD_LOC 4
1281: PLUS
1282: ST_TO_ADDR
1283: GO 1295
// j := i ;
1285: LD_ADDR_VAR 0 8
1289: PUSH
1290: LD_VAR 0 7
1294: ST_TO_ADDR
// CopySkills ( global_units [ cl ] [ j ] , un ) ;
1295: LD_LOC 2
1299: PUSH
1300: LD_VAR 0 2
1304: ARRAY
1305: PUSH
1306: LD_VAR 0 8
1310: ARRAY
1311: PPUSH
1312: LD_VAR 0 9
1316: PPUSH
1317: CALL_OW 510
// SetAttr ( un , attr_speed , GetAttr ( global_units [ cl ] [ j ] , attr_speed ) ) ;
1321: LD_VAR 0 9
1325: PPUSH
1326: LD_INT 2
1328: PPUSH
1329: LD_LOC 2
1333: PUSH
1334: LD_VAR 0 2
1338: ARRAY
1339: PUSH
1340: LD_VAR 0 8
1344: ARRAY
1345: PPUSH
1346: LD_INT 2
1348: PPUSH
1349: CALL_OW 260
1353: PPUSH
1354: CALL_OW 239
// SetAttr ( un , attr_stamina , GetAttr ( global_units [ cl ] [ j ] , attr_stamina ) ) ;
1358: LD_VAR 0 9
1362: PPUSH
1363: LD_INT 1
1365: PPUSH
1366: LD_LOC 2
1370: PUSH
1371: LD_VAR 0 2
1375: ARRAY
1376: PUSH
1377: LD_VAR 0 8
1381: ARRAY
1382: PPUSH
1383: LD_INT 1
1385: PPUSH
1386: CALL_OW 260
1390: PPUSH
1391: CALL_OW 239
// end ; PlaceUnitXYR ( un , x , y , r , false ) ;
1395: LD_VAR 0 9
1399: PPUSH
1400: LD_VAR 0 3
1404: PPUSH
1405: LD_VAR 0 4
1409: PPUSH
1410: LD_VAR 0 5
1414: PPUSH
1415: LD_INT 0
1417: PPUSH
1418: CALL_OW 50
// result := result ^ [ un ] ;
1422: LD_ADDR_VAR 0 6
1426: PUSH
1427: LD_VAR 0 6
1431: PUSH
1432: LD_VAR 0 9
1436: PUSH
1437: EMPTY
1438: LIST
1439: ADD
1440: ST_TO_ADDR
// end ;
1441: GO 1046
1443: POP
1444: POP
// if not global_defined then
1445: LD_LOC 3
1449: NOT
1450: IFFALSE 1528
// if ( global_units >= cl ) then
1452: LD_LOC 2
1456: PUSH
1457: LD_VAR 0 2
1461: GREATEREQUAL
1462: IFFALSE 1503
// global_units := Replace ( global_units , cl , global_units [ cl ] ^ result ) else
1464: LD_ADDR_LOC 2
1468: PUSH
1469: LD_LOC 2
1473: PPUSH
1474: LD_VAR 0 2
1478: PPUSH
1479: LD_LOC 2
1483: PUSH
1484: LD_VAR 0 2
1488: ARRAY
1489: PUSH
1490: LD_VAR 0 6
1494: ADD
1495: PPUSH
1496: CALL_OW 1
1500: ST_TO_ADDR
1501: GO 1528
// global_units := Replace ( global_units , cl , result ) ;
1503: LD_ADDR_LOC 2
1507: PUSH
1508: LD_LOC 2
1512: PPUSH
1513: LD_VAR 0 2
1517: PPUSH
1518: LD_VAR 0 6
1522: PPUSH
1523: CALL_OW 1
1527: ST_TO_ADDR
// end ;
1528: LD_VAR 0 6
1532: RET
// function prepare_side ( side ) ; var pos , x , y , dir , i , r , sol , br , dep ; begin
1533: LD_INT 0
1535: PPUSH
1536: PPUSH
1537: PPUSH
1538: PPUSH
1539: PPUSH
1540: PPUSH
1541: PPUSH
1542: PPUSH
1543: PPUSH
1544: PPUSH
// pos := Side_Positions [ side ] ;
1545: LD_ADDR_VAR 0 3
1549: PUSH
1550: LD_EXP 25
1554: PUSH
1555: LD_VAR 0 1
1559: ARRAY
1560: ST_TO_ADDR
// uc_nation := Side_Nations [ side ] ;
1561: LD_ADDR_OWVAR 21
1565: PUSH
1566: LD_EXP 26
1570: PUSH
1571: LD_VAR 0 1
1575: ARRAY
1576: ST_TO_ADDR
// uc_side := side ;
1577: LD_ADDR_OWVAR 20
1581: PUSH
1582: LD_VAR 0 1
1586: ST_TO_ADDR
// x := depot_def [ pos ] [ 1 ] ;
1587: LD_ADDR_VAR 0 4
1591: PUSH
1592: LD_EXP 29
1596: PUSH
1597: LD_VAR 0 3
1601: ARRAY
1602: PUSH
1603: LD_INT 1
1605: ARRAY
1606: ST_TO_ADDR
// y := depot_def [ pos ] [ 2 ] ;
1607: LD_ADDR_VAR 0 5
1611: PUSH
1612: LD_EXP 29
1616: PUSH
1617: LD_VAR 0 3
1621: ARRAY
1622: PUSH
1623: LD_INT 2
1625: ARRAY
1626: ST_TO_ADDR
// dir := depot_def [ pos ] [ 3 ] ;
1627: LD_ADDR_VAR 0 6
1631: PUSH
1632: LD_EXP 29
1636: PUSH
1637: LD_VAR 0 3
1641: ARRAY
1642: PUSH
1643: LD_INT 3
1645: ARRAY
1646: ST_TO_ADDR
// for i := 1 to 3 do
1647: LD_ADDR_VAR 0 7
1651: PUSH
1652: DOUBLE
1653: LD_INT 1
1655: DEC
1656: ST_TO_ADDR
1657: LD_INT 3
1659: PUSH
1660: FOR_TO
1661: IFFALSE 1789
// begin r := starting_resources [ i ] ;
1663: LD_ADDR_VAR 0 8
1667: PUSH
1668: LD_EXP 14
1672: PUSH
1673: LD_VAR 0 7
1677: ARRAY
1678: ST_TO_ADDR
// while r >= 10 do
1679: LD_VAR 0 8
1683: PUSH
1684: LD_INT 10
1686: GREATEREQUAL
1687: IFFALSE 1787
// if r > 50 then
1689: LD_VAR 0 8
1693: PUSH
1694: LD_INT 50
1696: GREATER
1697: IFFALSE 1743
// begin CreateResourcesXYR ( i , 5 , x , y , 4 , false ) ;
1699: LD_VAR 0 7
1703: PPUSH
1704: LD_INT 5
1706: PPUSH
1707: LD_VAR 0 4
1711: PPUSH
1712: LD_VAR 0 5
1716: PPUSH
1717: LD_INT 4
1719: PPUSH
1720: LD_INT 0
1722: PPUSH
1723: CALL_OW 60
// r := r - 50 ;
1727: LD_ADDR_VAR 0 8
1731: PUSH
1732: LD_VAR 0 8
1736: PUSH
1737: LD_INT 50
1739: MINUS
1740: ST_TO_ADDR
// end else
1741: GO 1785
// begin CreateResourcesXYR ( i , r div 10 , x , y , 4 , false ) ;
1743: LD_VAR 0 7
1747: PPUSH
1748: LD_VAR 0 8
1752: PUSH
1753: LD_INT 10
1755: DIV
1756: PPUSH
1757: LD_VAR 0 4
1761: PPUSH
1762: LD_VAR 0 5
1766: PPUSH
1767: LD_INT 4
1769: PPUSH
1770: LD_INT 0
1772: PPUSH
1773: CALL_OW 60
// r := 0 ;
1777: LD_ADDR_VAR 0 8
1781: PUSH
1782: LD_INT 0
1784: ST_TO_ADDR
// end ;
1785: GO 1679
// end ;
1787: GO 1660
1789: POP
1790: POP
// for r in starting_crates do
1791: LD_ADDR_VAR 0 8
1795: PUSH
1796: LD_EXP 13
1800: PUSH
1801: FOR_IN
1802: IFFALSE 1834
// CreateResourcesXYR ( mat_cans , 5 , x , y , r , false ) ;
1804: LD_INT 1
1806: PPUSH
1807: LD_INT 5
1809: PPUSH
1810: LD_VAR 0 4
1814: PPUSH
1815: LD_VAR 0 5
1819: PPUSH
1820: LD_VAR 0 8
1824: PPUSH
1825: LD_INT 0
1827: PPUSH
1828: CALL_OW 60
1832: GO 1801
1834: POP
1835: POP
// commander := true ;
1836: LD_ADDR_LOC 1
1840: PUSH
1841: LD_INT 1
1843: ST_TO_ADDR
// soldiers_created := 0 ;
1844: LD_ADDR_LOC 4
1848: PUSH
1849: LD_INT 0
1851: ST_TO_ADDR
// x := start_def [ pos ] [ 1 ] ;
1852: LD_ADDR_VAR 0 4
1856: PUSH
1857: LD_EXP 31
1861: PUSH
1862: LD_VAR 0 3
1866: ARRAY
1867: PUSH
1868: LD_INT 1
1870: ARRAY
1871: ST_TO_ADDR
// y := start_def [ pos ] [ 2 ] ;
1872: LD_ADDR_VAR 0 5
1876: PUSH
1877: LD_EXP 31
1881: PUSH
1882: LD_VAR 0 3
1886: ARRAY
1887: PUSH
1888: LD_INT 2
1890: ARRAY
1891: ST_TO_ADDR
// prepare_people ( nsol - number_of_breastworks , class_soldier , x , y , 5 ) ;
1892: LD_LOC 8
1896: PUSH
1897: LD_EXP 10
1901: MINUS
1902: PPUSH
1903: LD_INT 1
1905: PPUSH
1906: LD_VAR 0 4
1910: PPUSH
1911: LD_VAR 0 5
1915: PPUSH
1916: LD_INT 5
1918: PPUSH
1919: CALL 1018 0 5
// prepare_people ( neng , class_engineer , x , y , 5 ) ;
1923: LD_LOC 5
1927: PPUSH
1928: LD_INT 2
1930: PPUSH
1931: LD_VAR 0 4
1935: PPUSH
1936: LD_VAR 0 5
1940: PPUSH
1941: LD_INT 5
1943: PPUSH
1944: CALL 1018 0 5
// prepare_people ( nmech , class_mechanic , x , y , 5 ) ;
1948: LD_LOC 7
1952: PPUSH
1953: LD_INT 3
1955: PPUSH
1956: LD_VAR 0 4
1960: PPUSH
1961: LD_VAR 0 5
1965: PPUSH
1966: LD_INT 5
1968: PPUSH
1969: CALL 1018 0 5
// prepare_people ( nsci , class_scientistic , x , y , 5 ) ;
1973: LD_LOC 6
1977: PPUSH
1978: LD_INT 4
1980: PPUSH
1981: LD_VAR 0 4
1985: PPUSH
1986: LD_VAR 0 5
1990: PPUSH
1991: LD_INT 5
1993: PPUSH
1994: CALL 1018 0 5
// SetTech ( tech_artifact , side , state_disabled ) ;
1998: LD_INT 24
2000: PPUSH
2001: LD_VAR 0 1
2005: PPUSH
2006: LD_INT 0
2008: PPUSH
2009: CALL_OW 322
// SetTech ( tech_SibFiss , side , state_disabled ) ;
2013: LD_INT 25
2015: PPUSH
2016: LD_VAR 0 1
2020: PPUSH
2021: LD_INT 0
2023: PPUSH
2024: CALL_OW 322
// global_defined := true ;
2028: LD_ADDR_LOC 3
2032: PUSH
2033: LD_INT 1
2035: ST_TO_ADDR
// end ;
2036: LD_VAR 0 2
2040: RET
// function prepare_sides ; var i ; begin
2041: LD_INT 0
2043: PPUSH
2044: PPUSH
// global_units := [ ] ;
2045: LD_ADDR_LOC 2
2049: PUSH
2050: EMPTY
2051: ST_TO_ADDR
// global_defined := false ;
2052: LD_ADDR_LOC 3
2056: PUSH
2057: LD_INT 0
2059: ST_TO_ADDR
// CountClassMembers ;
2060: CALL 2110 0 0
// for i := 1 to 8 do
2064: LD_ADDR_VAR 0 2
2068: PUSH
2069: DOUBLE
2070: LD_INT 1
2072: DEC
2073: ST_TO_ADDR
2074: LD_INT 8
2076: PUSH
2077: FOR_TO
2078: IFFALSE 2103
// if Side_Positions [ i ] then
2080: LD_EXP 25
2084: PUSH
2085: LD_VAR 0 2
2089: ARRAY
2090: IFFALSE 2101
// prepare_side ( i ) ;
2092: LD_VAR 0 2
2096: PPUSH
2097: CALL 1533 0 1
2101: GO 2077
2103: POP
2104: POP
// end ;
2105: LD_VAR 0 1
2109: RET
// function CountClassMembers ; var Mode ; begin
2110: LD_INT 0
2112: PPUSH
2113: PPUSH
// neng := number_of_people ;
2114: LD_ADDR_LOC 5
2118: PUSH
2119: LD_EXP 11
2123: ST_TO_ADDR
// nsol := neng div [ 4 , 3 ] [ Mode ] ;
2124: LD_ADDR_LOC 8
2128: PUSH
2129: LD_LOC 5
2133: PUSH
2134: LD_INT 4
2136: PUSH
2137: LD_INT 3
2139: PUSH
2140: EMPTY
2141: LIST
2142: LIST
2143: PUSH
2144: LD_VAR 0 2
2148: ARRAY
2149: DIV
2150: ST_TO_ADDR
// if ( nsol < number_of_breastworks ) then
2151: LD_LOC 8
2155: PUSH
2156: LD_EXP 10
2160: LESS
2161: IFFALSE 2173
// nsol := number_of_breastworks ;
2163: LD_ADDR_LOC 8
2167: PUSH
2168: LD_EXP 10
2172: ST_TO_ADDR
// neng := neng - nsol ;
2173: LD_ADDR_LOC 5
2177: PUSH
2178: LD_LOC 5
2182: PUSH
2183: LD_LOC 8
2187: MINUS
2188: ST_TO_ADDR
// nsci := neng div [ 3 , 2 ] [ Mode ] ;
2189: LD_ADDR_LOC 6
2193: PUSH
2194: LD_LOC 5
2198: PUSH
2199: LD_INT 3
2201: PUSH
2202: LD_INT 2
2204: PUSH
2205: EMPTY
2206: LIST
2207: LIST
2208: PUSH
2209: LD_VAR 0 2
2213: ARRAY
2214: DIV
2215: ST_TO_ADDR
// if ( nsci < 1 ) then
2216: LD_LOC 6
2220: PUSH
2221: LD_INT 1
2223: LESS
2224: IFFALSE 2234
// nsci := 1 ;
2226: LD_ADDR_LOC 6
2230: PUSH
2231: LD_INT 1
2233: ST_TO_ADDR
// neng := neng - nsci ;
2234: LD_ADDR_LOC 5
2238: PUSH
2239: LD_LOC 5
2243: PUSH
2244: LD_LOC 6
2248: MINUS
2249: ST_TO_ADDR
// nmech := [ neng div 2 , 0 ] [ Mode ] ;
2250: LD_ADDR_LOC 7
2254: PUSH
2255: LD_LOC 5
2259: PUSH
2260: LD_INT 2
2262: DIV
2263: PUSH
2264: LD_INT 0
2266: PUSH
2267: EMPTY
2268: LIST
2269: LIST
2270: PUSH
2271: LD_VAR 0 2
2275: ARRAY
2276: ST_TO_ADDR
// neng := neng - nmech ;
2277: LD_ADDR_LOC 5
2281: PUSH
2282: LD_LOC 5
2286: PUSH
2287: LD_LOC 7
2291: MINUS
2292: ST_TO_ADDR
// if ( neng < 1 ) then
2293: LD_LOC 5
2297: PUSH
2298: LD_INT 1
2300: LESS
2301: IFFALSE 2311
// neng := 1 ;
2303: LD_ADDR_LOC 5
2307: PUSH
2308: LD_INT 1
2310: ST_TO_ADDR
// end ;
2311: LD_VAR 0 1
2315: RET
// starting var i , d ; begin ResetFog ;
2316: CALL_OW 335
// RandomizeAll ;
2320: CALL_OW 11
// randomedColors = [ ] ;
2324: LD_ADDR_EXP 41
2328: PUSH
2329: EMPTY
2330: ST_TO_ADDR
// amdestroyedBuildings = [ ] ;
2331: LD_ADDR_EXP 39
2335: PUSH
2336: EMPTY
2337: ST_TO_ADDR
// read_multiplayer_and_game_parameters ;
2338: CALL 0 0 0
// MultiplayerColorCheck ;
2342: CALL 4473 0 0
// ChangeAISide ( 1 , randomedColors [ 1 ] ) ;
2346: LD_INT 1
2348: PPUSH
2349: LD_EXP 41
2353: PUSH
2354: LD_INT 1
2356: ARRAY
2357: PPUSH
2358: CALL 3497 0 2
// SetBName ( amdepot1 , alpha ) ;
2362: LD_INT 5
2364: PPUSH
2365: LD_STRING alpha
2367: PPUSH
2368: CALL_OW 500
// enable_human_prediction := true ;
2372: LD_ADDR_OWVAR 51
2376: PUSH
2377: LD_INT 1
2379: ST_TO_ADDR
// mp_selectmsg := true ;
2380: LD_ADDR_OWVAR 13
2384: PUSH
2385: LD_INT 1
2387: ST_TO_ADDR
// AIDepotDest = 0 ;
2388: LD_ADDR_EXP 40
2392: PUSH
2393: LD_INT 0
2395: ST_TO_ADDR
// init_map ;
2396: CALL 796 0 0
// init_respawning ;
2400: CALL 2915 0 0
// prepare_sides ;
2404: CALL 2041 0 0
// ResetFog ;
2408: CALL_OW 335
// set_shared_visions_and_alliances ;
2412: CALL 960 0 0
// if FilterAllUnits ( [ f_side , sideP1 ] ) > 0 then
2416: LD_INT 22
2418: PUSH
2419: LD_EXP 42
2423: PUSH
2424: EMPTY
2425: LIST
2426: LIST
2427: PPUSH
2428: CALL_OW 69
2432: PUSH
2433: LD_INT 0
2435: GREATER
2436: IFFALSE 2483
// SpawnGenerals ( sideP1 , 2 , ru , 44 , Farmer , sex_male , 1 , [ 10 , 8 , 6 , 4 ] ) ;
2438: LD_EXP 42
2442: PPUSH
2443: LD_INT 2
2445: PPUSH
2446: LD_STRING ru
2448: PPUSH
2449: LD_INT 44
2451: PPUSH
2452: LD_STRING Farmer
2454: PPUSH
2455: LD_INT 1
2457: PPUSH
2458: LD_INT 1
2460: PPUSH
2461: LD_INT 10
2463: PUSH
2464: LD_INT 8
2466: PUSH
2467: LD_INT 6
2469: PUSH
2470: LD_INT 4
2472: PUSH
2473: EMPTY
2474: LIST
2475: LIST
2476: LIST
2477: LIST
2478: PPUSH
2479: CALL 3301 0 8
// if FilterAllUnits ( [ f_side , sideP2 ] ) > 0 then
2483: LD_INT 22
2485: PUSH
2486: LD_EXP 43
2490: PUSH
2491: EMPTY
2492: LIST
2493: LIST
2494: PPUSH
2495: CALL_OW 69
2499: PUSH
2500: LD_INT 0
2502: GREATER
2503: IFFALSE 2550
// SpawnGenerals ( sideP2 , 2 , HEIKE , 1 , Heike , sex_female , 1 , [ 10 , 8 , 6 , 4 ] ) ;
2505: LD_EXP 43
2509: PPUSH
2510: LD_INT 2
2512: PPUSH
2513: LD_STRING HEIKE
2515: PPUSH
2516: LD_INT 1
2518: PPUSH
2519: LD_STRING Heike
2521: PPUSH
2522: LD_INT 2
2524: PPUSH
2525: LD_INT 1
2527: PPUSH
2528: LD_INT 10
2530: PUSH
2531: LD_INT 8
2533: PUSH
2534: LD_INT 6
2536: PUSH
2537: LD_INT 4
2539: PUSH
2540: EMPTY
2541: LIST
2542: LIST
2543: LIST
2544: LIST
2545: PPUSH
2546: CALL 3301 0 8
// if FilterAllUnits ( [ f_side , sideP3 ] ) > 0 then
2550: LD_INT 22
2552: PUSH
2553: LD_EXP 44
2557: PUSH
2558: EMPTY
2559: LIST
2560: LIST
2561: PPUSH
2562: CALL_OW 69
2566: PUSH
2567: LD_INT 0
2569: GREATER
2570: IFFALSE 2617
// SpawnGenerals ( sideP3 , 3 , ru , 1 , Burlak , sex_male , 3 , [ 4 , 8 , 10 , 6 ] ) ;
2572: LD_EXP 44
2576: PPUSH
2577: LD_INT 3
2579: PPUSH
2580: LD_STRING ru
2582: PPUSH
2583: LD_INT 1
2585: PPUSH
2586: LD_STRING Burlak
2588: PPUSH
2589: LD_INT 1
2591: PPUSH
2592: LD_INT 3
2594: PPUSH
2595: LD_INT 4
2597: PUSH
2598: LD_INT 8
2600: PUSH
2601: LD_INT 10
2603: PUSH
2604: LD_INT 6
2606: PUSH
2607: EMPTY
2608: LIST
2609: LIST
2610: LIST
2611: LIST
2612: PPUSH
2613: CALL 3301 0 8
// if FilterAllUnits ( [ f_side , sideP4 ] ) > 0 then
2617: LD_INT 22
2619: PUSH
2620: LD_EXP 45
2624: PUSH
2625: EMPTY
2626: LIST
2627: LIST
2628: PPUSH
2629: CALL_OW 69
2633: PUSH
2634: LD_INT 0
2636: GREATER
2637: IFFALSE 2684
// SpawnGenerals ( sideP4 , 3 , ru , 21 , Gladkov , sex_male , 1 , [ 10 , 8 , 6 , 4 ] ) ;
2639: LD_EXP 45
2643: PPUSH
2644: LD_INT 3
2646: PPUSH
2647: LD_STRING ru
2649: PPUSH
2650: LD_INT 21
2652: PPUSH
2653: LD_STRING Gladkov
2655: PPUSH
2656: LD_INT 1
2658: PPUSH
2659: LD_INT 1
2661: PPUSH
2662: LD_INT 10
2664: PUSH
2665: LD_INT 8
2667: PUSH
2668: LD_INT 6
2670: PUSH
2671: LD_INT 4
2673: PUSH
2674: EMPTY
2675: LIST
2676: LIST
2677: LIST
2678: LIST
2679: PPUSH
2680: CALL 3301 0 8
// SetAttitude ( sideP1 , sideP2 , att_friend , true ) ;
2684: LD_EXP 42
2688: PPUSH
2689: LD_EXP 43
2693: PPUSH
2694: LD_INT 1
2696: PPUSH
2697: LD_INT 1
2699: PPUSH
2700: CALL_OW 80
// SetAttitude ( sideP1 , sideP2 , att_friend , true ) ;
2704: LD_EXP 42
2708: PPUSH
2709: LD_EXP 43
2713: PPUSH
2714: LD_INT 1
2716: PPUSH
2717: LD_INT 1
2719: PPUSH
2720: CALL_OW 80
// SetAttitude ( sideP1 , sideP3 , att_friend , true ) ;
2724: LD_EXP 42
2728: PPUSH
2729: LD_EXP 44
2733: PPUSH
2734: LD_INT 1
2736: PPUSH
2737: LD_INT 1
2739: PPUSH
2740: CALL_OW 80
// SetAttitude ( sideP1 , sideP4 , att_friend , true ) ;
2744: LD_EXP 42
2748: PPUSH
2749: LD_EXP 45
2753: PPUSH
2754: LD_INT 1
2756: PPUSH
2757: LD_INT 1
2759: PPUSH
2760: CALL_OW 80
// SetAttitude ( sideP2 , sideP3 , att_friend , true ) ;
2764: LD_EXP 43
2768: PPUSH
2769: LD_EXP 44
2773: PPUSH
2774: LD_INT 1
2776: PPUSH
2777: LD_INT 1
2779: PPUSH
2780: CALL_OW 80
// SetAttitude ( sideP2 , sideP4 , att_friend , true ) ;
2784: LD_EXP 43
2788: PPUSH
2789: LD_EXP 45
2793: PPUSH
2794: LD_INT 1
2796: PPUSH
2797: LD_INT 1
2799: PPUSH
2800: CALL_OW 80
// SetAttitude ( sideP3 , sideP4 , att_friend , true ) ;
2804: LD_EXP 44
2808: PPUSH
2809: LD_EXP 45
2813: PPUSH
2814: LD_INT 1
2816: PPUSH
2817: LD_INT 1
2819: PPUSH
2820: CALL_OW 80
// music_nat := Side_Nations [ your_side ] ;
2824: LD_ADDR_OWVAR 71
2828: PUSH
2829: LD_EXP 26
2833: PUSH
2834: LD_OWVAR 2
2838: ARRAY
2839: ST_TO_ADDR
// if IAmSpec then
2840: CALL_OW 531
2844: IFFALSE 2868
// begin FogOff ( true ) ;
2846: LD_INT 1
2848: PPUSH
2849: CALL_OW 344
// CenterNowOnXY ( 104 , 69 ) ;
2853: LD_INT 104
2855: PPUSH
2856: LD_INT 69
2858: PPUSH
2859: CALL_OW 86
// enable ( 400 ) ;
2863: LD_INT 400
2865: ENABLE_MARKED
// end else
2866: GO 2914
// begin CenterNowOnXY ( start_def [ Side_Positions [ your_side ] ] [ 1 ] , start_def [ Side_Positions [ your_side ] ] [ 2 ] ) ;
2868: LD_EXP 31
2872: PUSH
2873: LD_EXP 25
2877: PUSH
2878: LD_OWVAR 2
2882: ARRAY
2883: ARRAY
2884: PUSH
2885: LD_INT 1
2887: ARRAY
2888: PPUSH
2889: LD_EXP 31
2893: PUSH
2894: LD_EXP 25
2898: PUSH
2899: LD_OWVAR 2
2903: ARRAY
2904: ARRAY
2905: PUSH
2906: LD_INT 2
2908: ARRAY
2909: PPUSH
2910: CALL_OW 86
// end ; end ; end_of_file
2914: END
// var respawn , inqueue ; export function init_respawning ; begin
2915: LD_INT 0
2917: PPUSH
// respawn := Rand ( 1 , 8 ) ;
2918: LD_ADDR_LOC 9
2922: PUSH
2923: LD_INT 1
2925: PPUSH
2926: LD_INT 8
2928: PPUSH
2929: CALL_OW 12
2933: ST_TO_ADDR
// inqueue := [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
2934: LD_ADDR_LOC 10
2938: PUSH
2939: LD_INT 0
2941: PUSH
2942: LD_INT 0
2944: PUSH
2945: LD_INT 0
2947: PUSH
2948: LD_INT 0
2950: PUSH
2951: LD_INT 0
2953: PUSH
2954: LD_INT 0
2956: PUSH
2957: LD_INT 0
2959: PUSH
2960: LD_INT 0
2962: PUSH
2963: EMPTY
2964: LIST
2965: LIST
2966: LIST
2967: LIST
2968: LIST
2969: LIST
2970: LIST
2971: LIST
2972: ST_TO_ADDR
// end ;
2973: LD_VAR 0 1
2977: RET
// every 0 0$1 + 0 0$0.5 do var n , building_list , aktresp , b , skills , k ;
2978: GO 2980
2980: DISABLE
2981: LD_INT 0
2983: PPUSH
2984: PPUSH
2985: PPUSH
2986: PPUSH
2987: PPUSH
2988: PPUSH
// begin if respawning_time_max = 0 then
2989: LD_EXP 20
2993: PUSH
2994: LD_INT 0
2996: EQUAL
2997: IFFALSE 3001
// exit ;
2999: GO 3174
// if respawn = 8 then
3001: LD_LOC 9
3005: PUSH
3006: LD_INT 8
3008: EQUAL
3009: IFFALSE 3021
// respawn := 1 else
3011: LD_ADDR_LOC 9
3015: PUSH
3016: LD_INT 1
3018: ST_TO_ADDR
3019: GO 3035
// respawn := respawn + 1 ;
3021: LD_ADDR_LOC 9
3025: PUSH
3026: LD_LOC 9
3030: PUSH
3031: LD_INT 1
3033: PLUS
3034: ST_TO_ADDR
// if Side_Positions [ respawn ] then
3035: LD_EXP 25
3039: PUSH
3040: LD_LOC 9
3044: ARRAY
3045: IFFALSE 3173
// begin n := FilterAllUnits ( [ [ f_type , unit_human ] , [ f_side , respawn ] , f_not , [ f_nation , nation_nature ] ] ) ;
3047: LD_ADDR_VAR 0 1
3051: PUSH
3052: LD_INT 21
3054: PUSH
3055: LD_INT 1
3057: PUSH
3058: EMPTY
3059: LIST
3060: LIST
3061: PUSH
3062: LD_INT 22
3064: PUSH
3065: LD_LOC 9
3069: PUSH
3070: EMPTY
3071: LIST
3072: LIST
3073: PUSH
3074: LD_INT 3
3076: PUSH
3077: LD_INT 23
3079: PUSH
3080: LD_INT 0
3082: PUSH
3083: EMPTY
3084: LIST
3085: LIST
3086: PUSH
3087: EMPTY
3088: LIST
3089: LIST
3090: LIST
3091: LIST
3092: PPUSH
3093: CALL_OW 69
3097: ST_TO_ADDR
// if ( n + inqueue [ respawn ] ) < number_of_people then
3098: LD_VAR 0 1
3102: PUSH
3103: LD_LOC 10
3107: PUSH
3108: LD_LOC 9
3112: ARRAY
3113: PLUS
3114: PUSH
3115: LD_EXP 11
3119: LESS
3120: IFFALSE 3170
// begin aktresp := respawn ;
3122: LD_ADDR_VAR 0 3
3126: PUSH
3127: LD_LOC 9
3131: ST_TO_ADDR
// inqueue := Replace ( inqueue , aktresp , inqueue [ aktresp ] + 1 ) ;
3132: LD_ADDR_LOC 10
3136: PUSH
3137: LD_LOC 10
3141: PPUSH
3142: LD_VAR 0 3
3146: PPUSH
3147: LD_LOC 10
3151: PUSH
3152: LD_VAR 0 3
3156: ARRAY
3157: PUSH
3158: LD_INT 1
3160: PLUS
3161: PPUSH
3162: CALL_OW 1
3166: ST_TO_ADDR
// enable ;
3167: ENABLE
// end else
3168: GO 3171
// enable ;
3170: ENABLE
// end else
3171: GO 3174
// enable ;
3173: ENABLE
// end ;
3174: PPOPN 6
3176: END
// export function OnHumanRespawned ( un ) ; begin
3177: LD_INT 0
3179: PPUSH
// wait ( 0 0$30 ) ;
3180: LD_INT 1050
3182: PPUSH
3183: CALL_OW 67
// inqueue := Replace ( inqueue , GetSide ( un ) , inqueue [ GetSide ( un ) ] - 1 ) ;
3187: LD_ADDR_LOC 10
3191: PUSH
3192: LD_LOC 10
3196: PPUSH
3197: LD_VAR 0 1
3201: PPUSH
3202: CALL_OW 255
3206: PPUSH
3207: LD_LOC 10
3211: PUSH
3212: LD_VAR 0 1
3216: PPUSH
3217: CALL_OW 255
3221: ARRAY
3222: PUSH
3223: LD_INT 1
3225: MINUS
3226: PPUSH
3227: CALL_OW 1
3231: ST_TO_ADDR
// end ;
3232: LD_VAR 0 2
3236: RET
// on HumanDestroyed ( identifier , side , nation , x , y , direction , sex , cl ) do var attr , skills ;
3237: LD_INT 0
3239: PPUSH
3240: PPUSH
// begin if nation = nation_nature or side = 0 then
3241: LD_VAR 0 3
3245: PUSH
3246: LD_INT 0
3248: EQUAL
3249: PUSH
3250: LD_VAR 0 2
3254: PUSH
3255: LD_INT 0
3257: EQUAL
3258: OR
3259: IFFALSE 3263
// exit ;
3261: GO 3298
// inqueue := Replace ( inqueue , side , inqueue [ side ] + 1 ) ;
3263: LD_ADDR_LOC 10
3267: PUSH
3268: LD_LOC 10
3272: PPUSH
3273: LD_VAR 0 2
3277: PPUSH
3278: LD_LOC 10
3282: PUSH
3283: LD_VAR 0 2
3287: ARRAY
3288: PUSH
3289: LD_INT 1
3291: PLUS
3292: PPUSH
3293: CALL_OW 1
3297: ST_TO_ADDR
// end ; end_of_file
3298: PPOPN 10
3300: END
// export function SpawnGenerals ( side , nation , gallery , numberGal , name , sex , class , skillTab ) ; var x , y , un ; begin
3301: LD_INT 0
3303: PPUSH
3304: PPUSH
3305: PPUSH
3306: PPUSH
// uc_side = side ;
3307: LD_ADDR_OWVAR 20
3311: PUSH
3312: LD_VAR 0 1
3316: ST_TO_ADDR
// uc_nation = nation ;
3317: LD_ADDR_OWVAR 21
3321: PUSH
3322: LD_VAR 0 2
3326: ST_TO_ADDR
// hc_gallery = gallery ;
3327: LD_ADDR_OWVAR 33
3331: PUSH
3332: LD_VAR 0 3
3336: ST_TO_ADDR
// hc_face_number = numberGal ;
3337: LD_ADDR_OWVAR 34
3341: PUSH
3342: LD_VAR 0 4
3346: ST_TO_ADDR
// hc_name = name ;
3347: LD_ADDR_OWVAR 26
3351: PUSH
3352: LD_VAR 0 5
3356: ST_TO_ADDR
// hc_sex = sex ;
3357: LD_ADDR_OWVAR 27
3361: PUSH
3362: LD_VAR 0 6
3366: ST_TO_ADDR
// hc_class = class ;
3367: LD_ADDR_OWVAR 28
3371: PUSH
3372: LD_VAR 0 7
3376: ST_TO_ADDR
// hc_skills = skillTab ;
3377: LD_ADDR_OWVAR 31
3381: PUSH
3382: LD_VAR 0 8
3386: ST_TO_ADDR
// hc_importance = 100 ;
3387: LD_ADDR_OWVAR 32
3391: PUSH
3392: LD_INT 100
3394: ST_TO_ADDR
// un = CreateHuman ;
3395: LD_ADDR_VAR 0 12
3399: PUSH
3400: CALL_OW 44
3404: ST_TO_ADDR
// x = GetX ( FilterAllUnits ( [ f_side , side ] ) [ 1 ] ) ;
3405: LD_ADDR_VAR 0 10
3409: PUSH
3410: LD_INT 22
3412: PUSH
3413: LD_VAR 0 1
3417: PUSH
3418: EMPTY
3419: LIST
3420: LIST
3421: PPUSH
3422: CALL_OW 69
3426: PUSH
3427: LD_INT 1
3429: ARRAY
3430: PPUSH
3431: CALL_OW 250
3435: ST_TO_ADDR
// y = GetY ( FilterAllUnits ( [ f_side , side ] ) [ 1 ] ) ;
3436: LD_ADDR_VAR 0 11
3440: PUSH
3441: LD_INT 22
3443: PUSH
3444: LD_VAR 0 1
3448: PUSH
3449: EMPTY
3450: LIST
3451: LIST
3452: PPUSH
3453: CALL_OW 69
3457: PUSH
3458: LD_INT 1
3460: ARRAY
3461: PPUSH
3462: CALL_OW 251
3466: ST_TO_ADDR
// PlaceUnitXYR ( un , x , y , 5 , false ) ;
3467: LD_VAR 0 12
3471: PPUSH
3472: LD_VAR 0 10
3476: PPUSH
3477: LD_VAR 0 11
3481: PPUSH
3482: LD_INT 5
3484: PPUSH
3485: LD_INT 0
3487: PPUSH
3488: CALL_OW 50
// end ;
3492: LD_VAR 0 9
3496: RET
// export function ChangeAISide ( originalSide , newSide ) ; var i ; begin
3497: LD_INT 0
3499: PPUSH
3500: PPUSH
// SetSide ( FilterAllUnits ( [ f_side , originalSide ] ) , newSide ) ;
3501: LD_INT 22
3503: PUSH
3504: LD_VAR 0 1
3508: PUSH
3509: EMPTY
3510: LIST
3511: LIST
3512: PPUSH
3513: CALL_OW 69
3517: PPUSH
3518: LD_VAR 0 2
3522: PPUSH
3523: CALL_OW 235
// wait ( 0 0$2 ) ;
3527: LD_INT 70
3529: PPUSH
3530: CALL_OW 67
// for i in FilterAllUnits ( [ [ f_side , newSide ] , [ f_type , unit_building ] ] ) do
3534: LD_ADDR_VAR 0 4
3538: PUSH
3539: LD_INT 22
3541: PUSH
3542: LD_VAR 0 2
3546: PUSH
3547: EMPTY
3548: LIST
3549: LIST
3550: PUSH
3551: LD_INT 21
3553: PUSH
3554: LD_INT 3
3556: PUSH
3557: EMPTY
3558: LIST
3559: LIST
3560: PUSH
3561: EMPTY
3562: LIST
3563: LIST
3564: PPUSH
3565: CALL_OW 69
3569: PUSH
3570: FOR_IN
3571: IFFALSE 3587
// SetBLevel ( i , 10 ) ;
3573: LD_VAR 0 4
3577: PPUSH
3578: LD_INT 10
3580: PPUSH
3581: CALL_OW 241
3585: GO 3570
3587: POP
3588: POP
// PrepareAmericanBase ;
3589: CALL 3602 0 0
// PrepareDifficulty ;
3593: CALL 4738 0 0
// end ;
3597: LD_VAR 0 3
3601: RET
// export function PrepareAmericanBase ; var i ; begin
3602: LD_INT 0
3604: PPUSH
3605: PPUSH
// for i in FilterAllUnits ( [ [ f_side , randomedColors [ 1 ] ] , [ f_btype , b_bunker ] , [ f_bweapon , 2 ] ] ) do
3606: LD_ADDR_VAR 0 2
3610: PUSH
3611: LD_INT 22
3613: PUSH
3614: LD_EXP 41
3618: PUSH
3619: LD_INT 1
3621: ARRAY
3622: PUSH
3623: EMPTY
3624: LIST
3625: LIST
3626: PUSH
3627: LD_INT 30
3629: PUSH
3630: LD_INT 32
3632: PUSH
3633: EMPTY
3634: LIST
3635: LIST
3636: PUSH
3637: LD_INT 35
3639: PUSH
3640: LD_INT 2
3642: PUSH
3643: EMPTY
3644: LIST
3645: LIST
3646: PUSH
3647: EMPTY
3648: LIST
3649: LIST
3650: LIST
3651: PPUSH
3652: CALL_OW 69
3656: PUSH
3657: FOR_IN
3658: IFFALSE 3701
// PlaceWeaponTurret ( i , [ 9 , 10 , 6 , 7 ] [ Rand ( 1 , 4 ) ] ) ;
3660: LD_VAR 0 2
3664: PPUSH
3665: LD_INT 9
3667: PUSH
3668: LD_INT 10
3670: PUSH
3671: LD_INT 6
3673: PUSH
3674: LD_INT 7
3676: PUSH
3677: EMPTY
3678: LIST
3679: LIST
3680: LIST
3681: LIST
3682: PUSH
3683: LD_INT 1
3685: PPUSH
3686: LD_INT 4
3688: PPUSH
3689: CALL_OW 12
3693: ARRAY
3694: PPUSH
3695: CALL_OW 431
3699: GO 3657
3701: POP
3702: POP
// for i in FilterAllUnits ( [ [ f_side , randomedColors [ 1 ] ] , [ f_btype , b_bunker ] ] ) do
3703: LD_ADDR_VAR 0 2
3707: PUSH
3708: LD_INT 22
3710: PUSH
3711: LD_EXP 41
3715: PUSH
3716: LD_INT 1
3718: ARRAY
3719: PUSH
3720: EMPTY
3721: LIST
3722: LIST
3723: PUSH
3724: LD_INT 30
3726: PUSH
3727: LD_INT 32
3729: PUSH
3730: EMPTY
3731: LIST
3732: LIST
3733: PUSH
3734: EMPTY
3735: LIST
3736: LIST
3737: PPUSH
3738: CALL_OW 69
3742: PUSH
3743: FOR_IN
3744: IFFALSE 3780
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 1 , i , difficulty_level , 1 , 1 ) ;
3746: LD_EXP 41
3750: PUSH
3751: LD_INT 1
3753: ARRAY
3754: PPUSH
3755: LD_INT 1
3757: PPUSH
3758: LD_VAR 0 2
3762: PPUSH
3763: LD_EXP 38
3767: PPUSH
3768: LD_INT 1
3770: PPUSH
3771: LD_INT 1
3773: PPUSH
3774: CALL 5175 0 6
3778: GO 3743
3780: POP
3781: POP
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 1 , amdepot1 , difficulty_level , 2 , 6 ) ;
3782: LD_EXP 41
3786: PUSH
3787: LD_INT 1
3789: ARRAY
3790: PPUSH
3791: LD_INT 1
3793: PPUSH
3794: LD_INT 5
3796: PPUSH
3797: LD_EXP 38
3801: PPUSH
3802: LD_INT 2
3804: PPUSH
3805: LD_INT 6
3807: PPUSH
3808: CALL 5175 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 1 , amdepot2 , difficulty_level , 2 , 6 ) ;
3812: LD_EXP 41
3816: PUSH
3817: LD_INT 1
3819: ARRAY
3820: PPUSH
3821: LD_INT 1
3823: PPUSH
3824: LD_INT 16
3826: PPUSH
3827: LD_EXP 38
3831: PPUSH
3832: LD_INT 2
3834: PPUSH
3835: LD_INT 6
3837: PPUSH
3838: CALL 5175 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 1 , amfab1 , difficulty_level , 3 , 6 ) ;
3842: LD_EXP 41
3846: PUSH
3847: LD_INT 1
3849: ARRAY
3850: PPUSH
3851: LD_INT 1
3853: PPUSH
3854: LD_INT 6
3856: PPUSH
3857: LD_EXP 38
3861: PPUSH
3862: LD_INT 3
3864: PPUSH
3865: LD_INT 6
3867: PPUSH
3868: CALL 5175 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 1 , amfab2 , difficulty_level , 3 , 6 ) ;
3872: LD_EXP 41
3876: PUSH
3877: LD_INT 1
3879: ARRAY
3880: PPUSH
3881: LD_INT 1
3883: PPUSH
3884: LD_INT 51
3886: PPUSH
3887: LD_EXP 38
3891: PPUSH
3892: LD_INT 3
3894: PPUSH
3895: LD_INT 6
3897: PPUSH
3898: CALL 5175 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 1 , amfab3 , difficulty_level , 3 , 6 ) ;
3902: LD_EXP 41
3906: PUSH
3907: LD_INT 1
3909: ARRAY
3910: PPUSH
3911: LD_INT 1
3913: PPUSH
3914: LD_INT 19
3916: PPUSH
3917: LD_EXP 38
3921: PPUSH
3922: LD_INT 3
3924: PPUSH
3925: LD_INT 6
3927: PPUSH
3928: CALL 5175 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 1 , amlab1 , difficulty_level , 4 , 3 ) ;
3932: LD_EXP 41
3936: PUSH
3937: LD_INT 1
3939: ARRAY
3940: PPUSH
3941: LD_INT 1
3943: PPUSH
3944: LD_INT 47
3946: PPUSH
3947: LD_EXP 38
3951: PPUSH
3952: LD_INT 4
3954: PPUSH
3955: LD_INT 3
3957: PPUSH
3958: CALL 5175 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 1 , amlab2 , difficulty_level , 4 , 3 ) ;
3962: LD_EXP 41
3966: PUSH
3967: LD_INT 1
3969: ARRAY
3970: PPUSH
3971: LD_INT 1
3973: PPUSH
3974: LD_INT 317
3976: PPUSH
3977: LD_EXP 38
3981: PPUSH
3982: LD_INT 4
3984: PPUSH
3985: LD_INT 3
3987: PPUSH
3988: CALL 5175 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 1 , amlab3 , difficulty_level , 4 , 3 ) ;
3992: LD_EXP 41
3996: PUSH
3997: LD_INT 1
3999: ARRAY
4000: PPUSH
4001: LD_INT 1
4003: PPUSH
4004: LD_INT 25
4006: PPUSH
4007: LD_EXP 38
4011: PPUSH
4012: LD_INT 4
4014: PPUSH
4015: LD_INT 3
4017: PPUSH
4018: CALL 5175 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 1 , ambar1 , difficulty_level , 5 , 3 ) ;
4022: LD_EXP 41
4026: PUSH
4027: LD_INT 1
4029: ARRAY
4030: PPUSH
4031: LD_INT 1
4033: PPUSH
4034: LD_INT 59
4036: PPUSH
4037: LD_EXP 38
4041: PPUSH
4042: LD_INT 5
4044: PPUSH
4045: LD_INT 3
4047: PPUSH
4048: CALL 5175 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 1 , ambar2 , difficulty_level , 5 , 3 ) ;
4052: LD_EXP 41
4056: PUSH
4057: LD_INT 1
4059: ARRAY
4060: PPUSH
4061: LD_INT 1
4063: PPUSH
4064: LD_INT 323
4066: PPUSH
4067: LD_EXP 38
4071: PPUSH
4072: LD_INT 5
4074: PPUSH
4075: LD_INT 3
4077: PPUSH
4078: CALL 5175 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 1 , ambar3 , difficulty_level , 5 , 3 ) ;
4082: LD_EXP 41
4086: PUSH
4087: LD_INT 1
4089: ARRAY
4090: PPUSH
4091: LD_INT 1
4093: PPUSH
4094: LD_INT 118
4096: PPUSH
4097: LD_EXP 38
4101: PPUSH
4102: LD_INT 5
4104: PPUSH
4105: LD_INT 3
4107: PPUSH
4108: CALL 5175 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 1 , ambar4 , difficulty_level , 5 , 3 ) ;
4112: LD_EXP 41
4116: PUSH
4117: LD_INT 1
4119: ARRAY
4120: PPUSH
4121: LD_INT 1
4123: PPUSH
4124: LD_INT 204
4126: PPUSH
4127: LD_EXP 38
4131: PPUSH
4132: LD_INT 5
4134: PPUSH
4135: LD_INT 3
4137: PPUSH
4138: CALL 5175 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 1 , amcontrol1 , difficulty_level , 3 , 3 ) ;
4142: LD_EXP 41
4146: PUSH
4147: LD_INT 1
4149: ARRAY
4150: PPUSH
4151: LD_INT 1
4153: PPUSH
4154: LD_INT 14
4156: PPUSH
4157: LD_EXP 38
4161: PPUSH
4162: LD_INT 3
4164: PPUSH
4165: LD_INT 3
4167: PPUSH
4168: CALL 5175 0 6
// SetTech ( 60 , randomedColors [ 1 ] , state_researched ) ;
4172: LD_INT 60
4174: PPUSH
4175: LD_EXP 41
4179: PUSH
4180: LD_INT 1
4182: ARRAY
4183: PPUSH
4184: LD_INT 2
4186: PPUSH
4187: CALL_OW 322
// SetTech ( 61 , randomedColors [ 1 ] , state_researched ) ;
4191: LD_INT 61
4193: PPUSH
4194: LD_EXP 41
4198: PUSH
4199: LD_INT 1
4201: ARRAY
4202: PPUSH
4203: LD_INT 2
4205: PPUSH
4206: CALL_OW 322
// SetTech ( 62 , randomedColors [ 1 ] , state_researched ) ;
4210: LD_INT 62
4212: PPUSH
4213: LD_EXP 41
4217: PUSH
4218: LD_INT 1
4220: ARRAY
4221: PPUSH
4222: LD_INT 2
4224: PPUSH
4225: CALL_OW 322
// SetTech ( 1 , randomedColors [ 1 ] , state_disabled ) ;
4229: LD_INT 1
4231: PPUSH
4232: LD_EXP 41
4236: PUSH
4237: LD_INT 1
4239: ARRAY
4240: PPUSH
4241: LD_INT 0
4243: PPUSH
4244: CALL_OW 322
// SetAttitude ( randomedColors [ 1 ] , randomedColors [ 2 ] , att_friend , true ) ;
4248: LD_EXP 41
4252: PUSH
4253: LD_INT 1
4255: ARRAY
4256: PPUSH
4257: LD_EXP 41
4261: PUSH
4262: LD_INT 2
4264: ARRAY
4265: PPUSH
4266: LD_INT 1
4268: PPUSH
4269: LD_INT 1
4271: PPUSH
4272: CALL_OW 80
// SetAttitude ( randomedColors [ 1 ] , sideP1 , att_enemy , true ) ;
4276: LD_EXP 41
4280: PUSH
4281: LD_INT 1
4283: ARRAY
4284: PPUSH
4285: LD_EXP 42
4289: PPUSH
4290: LD_INT 2
4292: PPUSH
4293: LD_INT 1
4295: PPUSH
4296: CALL_OW 80
// SetAttitude ( randomedColors [ 1 ] , sideP2 , att_enemy , true ) ;
4300: LD_EXP 41
4304: PUSH
4305: LD_INT 1
4307: ARRAY
4308: PPUSH
4309: LD_EXP 43
4313: PPUSH
4314: LD_INT 2
4316: PPUSH
4317: LD_INT 1
4319: PPUSH
4320: CALL_OW 80
// SetAttitude ( randomedColors [ 1 ] , sideP3 , att_enemy , true ) ;
4324: LD_EXP 41
4328: PUSH
4329: LD_INT 1
4331: ARRAY
4332: PPUSH
4333: LD_EXP 44
4337: PPUSH
4338: LD_INT 2
4340: PPUSH
4341: LD_INT 1
4343: PPUSH
4344: CALL_OW 80
// SetAttitude ( randomedColors [ 1 ] , sideP4 , att_enemy , true ) ;
4348: LD_EXP 41
4352: PUSH
4353: LD_INT 1
4355: ARRAY
4356: PPUSH
4357: LD_EXP 45
4361: PPUSH
4362: LD_INT 2
4364: PPUSH
4365: LD_INT 1
4367: PPUSH
4368: CALL_OW 80
// SetAttitude ( randomedColors [ 2 ] , sideP1 , att_enemy , true ) ;
4372: LD_EXP 41
4376: PUSH
4377: LD_INT 2
4379: ARRAY
4380: PPUSH
4381: LD_EXP 42
4385: PPUSH
4386: LD_INT 2
4388: PPUSH
4389: LD_INT 1
4391: PPUSH
4392: CALL_OW 80
// SetAttitude ( randomedColors [ 2 ] , sideP2 , att_enemy , true ) ;
4396: LD_EXP 41
4400: PUSH
4401: LD_INT 2
4403: ARRAY
4404: PPUSH
4405: LD_EXP 43
4409: PPUSH
4410: LD_INT 2
4412: PPUSH
4413: LD_INT 1
4415: PPUSH
4416: CALL_OW 80
// SetAttitude ( randomedColors [ 2 ] , sideP3 , att_enemy , true ) ;
4420: LD_EXP 41
4424: PUSH
4425: LD_INT 2
4427: ARRAY
4428: PPUSH
4429: LD_EXP 44
4433: PPUSH
4434: LD_INT 2
4436: PPUSH
4437: LD_INT 1
4439: PPUSH
4440: CALL_OW 80
// SetAttitude ( randomedColors [ 2 ] , sideP4 , att_enemy , true ) ;
4444: LD_EXP 41
4448: PUSH
4449: LD_INT 2
4451: ARRAY
4452: PPUSH
4453: LD_EXP 45
4457: PPUSH
4458: LD_INT 2
4460: PPUSH
4461: LD_INT 1
4463: PPUSH
4464: CALL_OW 80
// end ;
4468: LD_VAR 0 1
4472: RET
// export function MultiplayerColorCheck ; var i , tmp ; begin
4473: LD_INT 0
4475: PPUSH
4476: PPUSH
4477: PPUSH
// for i = 1 to Side_Positions do
4478: LD_ADDR_VAR 0 2
4482: PUSH
4483: DOUBLE
4484: LD_INT 1
4486: DEC
4487: ST_TO_ADDR
4488: LD_EXP 25
4492: PUSH
4493: FOR_TO
4494: IFFALSE 4524
// if Side_Positions [ i ] = 1 then
4496: LD_EXP 25
4500: PUSH
4501: LD_VAR 0 2
4505: ARRAY
4506: PUSH
4507: LD_INT 1
4509: EQUAL
4510: IFFALSE 4522
// sideP1 = i ;
4512: LD_ADDR_EXP 42
4516: PUSH
4517: LD_VAR 0 2
4521: ST_TO_ADDR
4522: GO 4493
4524: POP
4525: POP
// for i = 1 to Side_Positions do
4526: LD_ADDR_VAR 0 2
4530: PUSH
4531: DOUBLE
4532: LD_INT 1
4534: DEC
4535: ST_TO_ADDR
4536: LD_EXP 25
4540: PUSH
4541: FOR_TO
4542: IFFALSE 4572
// if Side_Positions [ i ] = 2 then
4544: LD_EXP 25
4548: PUSH
4549: LD_VAR 0 2
4553: ARRAY
4554: PUSH
4555: LD_INT 2
4557: EQUAL
4558: IFFALSE 4570
// sideP2 = i ;
4560: LD_ADDR_EXP 43
4564: PUSH
4565: LD_VAR 0 2
4569: ST_TO_ADDR
4570: GO 4541
4572: POP
4573: POP
// for i = 1 to Side_Positions do
4574: LD_ADDR_VAR 0 2
4578: PUSH
4579: DOUBLE
4580: LD_INT 1
4582: DEC
4583: ST_TO_ADDR
4584: LD_EXP 25
4588: PUSH
4589: FOR_TO
4590: IFFALSE 4620
// if Side_Positions [ i ] = 3 then
4592: LD_EXP 25
4596: PUSH
4597: LD_VAR 0 2
4601: ARRAY
4602: PUSH
4603: LD_INT 3
4605: EQUAL
4606: IFFALSE 4618
// sideP3 = i ;
4608: LD_ADDR_EXP 44
4612: PUSH
4613: LD_VAR 0 2
4617: ST_TO_ADDR
4618: GO 4589
4620: POP
4621: POP
// for i = 1 to Side_Positions do
4622: LD_ADDR_VAR 0 2
4626: PUSH
4627: DOUBLE
4628: LD_INT 1
4630: DEC
4631: ST_TO_ADDR
4632: LD_EXP 25
4636: PUSH
4637: FOR_TO
4638: IFFALSE 4668
// if Side_Positions [ i ] = 4 then
4640: LD_EXP 25
4644: PUSH
4645: LD_VAR 0 2
4649: ARRAY
4650: PUSH
4651: LD_INT 4
4653: EQUAL
4654: IFFALSE 4666
// sideP4 = i ;
4656: LD_ADDR_EXP 45
4660: PUSH
4661: LD_VAR 0 2
4665: ST_TO_ADDR
4666: GO 4637
4668: POP
4669: POP
// randomedColors = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ] diff sideP1 ^ sideP2 ^ sideP3 ^ sideP4 ;
4670: LD_ADDR_EXP 41
4674: PUSH
4675: LD_INT 1
4677: PUSH
4678: LD_INT 2
4680: PUSH
4681: LD_INT 3
4683: PUSH
4684: LD_INT 4
4686: PUSH
4687: LD_INT 5
4689: PUSH
4690: LD_INT 6
4692: PUSH
4693: LD_INT 7
4695: PUSH
4696: LD_INT 8
4698: PUSH
4699: EMPTY
4700: LIST
4701: LIST
4702: LIST
4703: LIST
4704: LIST
4705: LIST
4706: LIST
4707: LIST
4708: PUSH
4709: LD_EXP 42
4713: PUSH
4714: LD_EXP 43
4718: ADD
4719: PUSH
4720: LD_EXP 44
4724: ADD
4725: PUSH
4726: LD_EXP 45
4730: ADD
4731: DIFF
4732: ST_TO_ADDR
// end ;
4733: LD_VAR 0 1
4737: RET
// export function PrepareDifficulty ; begin
4738: LD_INT 0
4740: PPUSH
// if difficulty_level > 5 then
4741: LD_EXP 38
4745: PUSH
4746: LD_INT 5
4748: GREATER
4749: IFFALSE 4884
// begin SetTech ( 48 , randomedColors [ 2 ] , state_researched ) ;
4751: LD_INT 48
4753: PPUSH
4754: LD_EXP 41
4758: PUSH
4759: LD_INT 2
4761: ARRAY
4762: PPUSH
4763: LD_INT 2
4765: PPUSH
4766: CALL_OW 322
// SetTech ( 51 , randomedColors [ 2 ] , state_researched ) ;
4770: LD_INT 51
4772: PPUSH
4773: LD_EXP 41
4777: PUSH
4778: LD_INT 2
4780: ARRAY
4781: PPUSH
4782: LD_INT 2
4784: PPUSH
4785: CALL_OW 322
// SetTech ( 54 , randomedColors [ 2 ] , state_researched ) ;
4789: LD_INT 54
4791: PPUSH
4792: LD_EXP 41
4796: PUSH
4797: LD_INT 2
4799: ARRAY
4800: PPUSH
4801: LD_INT 2
4803: PPUSH
4804: CALL_OW 322
// SetTech ( 57 , randomedColors [ 2 ] , state_researched ) ;
4808: LD_INT 57
4810: PPUSH
4811: LD_EXP 41
4815: PUSH
4816: LD_INT 2
4818: ARRAY
4819: PPUSH
4820: LD_INT 2
4822: PPUSH
4823: CALL_OW 322
// SetTech ( 60 , randomedColors [ 2 ] , state_researched ) ;
4827: LD_INT 60
4829: PPUSH
4830: LD_EXP 41
4834: PUSH
4835: LD_INT 2
4837: ARRAY
4838: PPUSH
4839: LD_INT 2
4841: PPUSH
4842: CALL_OW 322
// SetTech ( 63 , randomedColors [ 2 ] , state_researched ) ;
4846: LD_INT 63
4848: PPUSH
4849: LD_EXP 41
4853: PUSH
4854: LD_INT 2
4856: ARRAY
4857: PPUSH
4858: LD_INT 2
4860: PPUSH
4861: CALL_OW 322
// SetTech ( 66 , randomedColors [ 2 ] , state_researched ) ;
4865: LD_INT 66
4867: PPUSH
4868: LD_EXP 41
4872: PUSH
4873: LD_INT 2
4875: ARRAY
4876: PPUSH
4877: LD_INT 2
4879: PPUSH
4880: CALL_OW 322
// end ; if difficulty_level > 6 then
4884: LD_EXP 38
4888: PUSH
4889: LD_INT 6
4891: GREATER
4892: IFFALSE 5027
// begin SetTech ( 49 , randomedColors [ 2 ] , state_researched ) ;
4894: LD_INT 49
4896: PPUSH
4897: LD_EXP 41
4901: PUSH
4902: LD_INT 2
4904: ARRAY
4905: PPUSH
4906: LD_INT 2
4908: PPUSH
4909: CALL_OW 322
// SetTech ( 52 , randomedColors [ 2 ] , state_researched ) ;
4913: LD_INT 52
4915: PPUSH
4916: LD_EXP 41
4920: PUSH
4921: LD_INT 2
4923: ARRAY
4924: PPUSH
4925: LD_INT 2
4927: PPUSH
4928: CALL_OW 322
// SetTech ( 55 , randomedColors [ 2 ] , state_researched ) ;
4932: LD_INT 55
4934: PPUSH
4935: LD_EXP 41
4939: PUSH
4940: LD_INT 2
4942: ARRAY
4943: PPUSH
4944: LD_INT 2
4946: PPUSH
4947: CALL_OW 322
// SetTech ( 58 , randomedColors [ 2 ] , state_researched ) ;
4951: LD_INT 58
4953: PPUSH
4954: LD_EXP 41
4958: PUSH
4959: LD_INT 2
4961: ARRAY
4962: PPUSH
4963: LD_INT 2
4965: PPUSH
4966: CALL_OW 322
// SetTech ( 61 , randomedColors [ 2 ] , state_researched ) ;
4970: LD_INT 61
4972: PPUSH
4973: LD_EXP 41
4977: PUSH
4978: LD_INT 2
4980: ARRAY
4981: PPUSH
4982: LD_INT 2
4984: PPUSH
4985: CALL_OW 322
// SetTech ( 64 , randomedColors [ 2 ] , state_researched ) ;
4989: LD_INT 64
4991: PPUSH
4992: LD_EXP 41
4996: PUSH
4997: LD_INT 2
4999: ARRAY
5000: PPUSH
5001: LD_INT 2
5003: PPUSH
5004: CALL_OW 322
// SetTech ( 67 , randomedColors [ 2 ] , state_researched ) ;
5008: LD_INT 67
5010: PPUSH
5011: LD_EXP 41
5015: PUSH
5016: LD_INT 2
5018: ARRAY
5019: PPUSH
5020: LD_INT 2
5022: PPUSH
5023: CALL_OW 322
// end ; if difficulty_level > 8 then
5027: LD_EXP 38
5031: PUSH
5032: LD_INT 8
5034: GREATER
5035: IFFALSE 5170
// begin SetTech ( 50 , randomedColors [ 2 ] , state_researched ) ;
5037: LD_INT 50
5039: PPUSH
5040: LD_EXP 41
5044: PUSH
5045: LD_INT 2
5047: ARRAY
5048: PPUSH
5049: LD_INT 2
5051: PPUSH
5052: CALL_OW 322
// SetTech ( 53 , randomedColors [ 2 ] , state_researched ) ;
5056: LD_INT 53
5058: PPUSH
5059: LD_EXP 41
5063: PUSH
5064: LD_INT 2
5066: ARRAY
5067: PPUSH
5068: LD_INT 2
5070: PPUSH
5071: CALL_OW 322
// SetTech ( 56 , randomedColors [ 2 ] , state_researched ) ;
5075: LD_INT 56
5077: PPUSH
5078: LD_EXP 41
5082: PUSH
5083: LD_INT 2
5085: ARRAY
5086: PPUSH
5087: LD_INT 2
5089: PPUSH
5090: CALL_OW 322
// SetTech ( 59 , randomedColors [ 2 ] , state_researched ) ;
5094: LD_INT 59
5096: PPUSH
5097: LD_EXP 41
5101: PUSH
5102: LD_INT 2
5104: ARRAY
5105: PPUSH
5106: LD_INT 2
5108: PPUSH
5109: CALL_OW 322
// SetTech ( 62 , randomedColors [ 2 ] , state_researched ) ;
5113: LD_INT 62
5115: PPUSH
5116: LD_EXP 41
5120: PUSH
5121: LD_INT 2
5123: ARRAY
5124: PPUSH
5125: LD_INT 2
5127: PPUSH
5128: CALL_OW 322
// SetTech ( 65 , randomedColors [ 2 ] , state_researched ) ;
5132: LD_INT 65
5134: PPUSH
5135: LD_EXP 41
5139: PUSH
5140: LD_INT 2
5142: ARRAY
5143: PPUSH
5144: LD_INT 2
5146: PPUSH
5147: CALL_OW 322
// SetTech ( 68 , randomedColors [ 2 ] , state_researched ) ;
5151: LD_INT 68
5153: PPUSH
5154: LD_EXP 41
5158: PUSH
5159: LD_INT 2
5161: ARRAY
5162: PPUSH
5163: LD_INT 2
5165: PPUSH
5166: CALL_OW 322
// end ; end ;
5170: LD_VAR 0 1
5174: RET
// export function MultiplayerRespawnInside ( side , nation , build , skill , class , count ) ; var i , l , un ; begin
5175: LD_INT 0
5177: PPUSH
5178: PPUSH
5179: PPUSH
5180: PPUSH
// for i = 1 to count do
5181: LD_ADDR_VAR 0 8
5185: PUSH
5186: DOUBLE
5187: LD_INT 1
5189: DEC
5190: ST_TO_ADDR
5191: LD_VAR 0 6
5195: PUSH
5196: FOR_TO
5197: IFFALSE 5341
// begin uc_side = side ;
5199: LD_ADDR_OWVAR 20
5203: PUSH
5204: LD_VAR 0 1
5208: ST_TO_ADDR
// uc_nation = nation ;
5209: LD_ADDR_OWVAR 21
5213: PUSH
5214: LD_VAR 0 2
5218: ST_TO_ADDR
// hc_gallery =  ;
5219: LD_ADDR_OWVAR 33
5223: PUSH
5224: LD_STRING 
5226: ST_TO_ADDR
// hc_name =  ;
5227: LD_ADDR_OWVAR 26
5231: PUSH
5232: LD_STRING 
5234: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
5235: LD_ADDR_OWVAR 29
5239: PUSH
5240: LD_INT 10
5242: PUSH
5243: LD_INT 10
5245: PUSH
5246: EMPTY
5247: LIST
5248: LIST
5249: ST_TO_ADDR
// hc_skills = [ skill , skill , skill , skill ] ;
5250: LD_ADDR_OWVAR 31
5254: PUSH
5255: LD_VAR 0 4
5259: PUSH
5260: LD_VAR 0 4
5264: PUSH
5265: LD_VAR 0 4
5269: PUSH
5270: LD_VAR 0 4
5274: PUSH
5275: EMPTY
5276: LIST
5277: LIST
5278: LIST
5279: LIST
5280: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
5281: LD_ADDR_OWVAR 27
5285: PUSH
5286: LD_INT 1
5288: PPUSH
5289: LD_INT 2
5291: PPUSH
5292: CALL_OW 12
5296: ST_TO_ADDR
// hc_class = class ;
5297: LD_ADDR_OWVAR 28
5301: PUSH
5302: LD_VAR 0 5
5306: ST_TO_ADDR
// hc_importance = 0 ;
5307: LD_ADDR_OWVAR 32
5311: PUSH
5312: LD_INT 0
5314: ST_TO_ADDR
// un = CreateHuman ;
5315: LD_ADDR_VAR 0 10
5319: PUSH
5320: CALL_OW 44
5324: ST_TO_ADDR
// PlaceHumanInUnit ( un , build ) ;
5325: LD_VAR 0 10
5329: PPUSH
5330: LD_VAR 0 3
5334: PPUSH
5335: CALL_OW 52
// end ;
5339: GO 5196
5341: POP
5342: POP
// end ;
5343: LD_VAR 0 7
5347: RET
// export function ResAllTechs ( side , lab , nation ) ; var i , tech , cout ; begin
5348: LD_INT 0
5350: PPUSH
5351: PPUSH
5352: PPUSH
5353: PPUSH
// for i = 1 to 72 do
5354: LD_ADDR_VAR 0 5
5358: PUSH
5359: DOUBLE
5360: LD_INT 1
5362: DEC
5363: ST_TO_ADDR
5364: LD_INT 72
5366: PUSH
5367: FOR_TO
5368: IFFALSE 5426
// if GetTech ( i , side ) = state_enabled and TechNationAvailable ( i , nation ) = true then
5370: LD_VAR 0 5
5374: PPUSH
5375: LD_VAR 0 1
5379: PPUSH
5380: CALL_OW 321
5384: PUSH
5385: LD_INT 1
5387: EQUAL
5388: PUSH
5389: LD_VAR 0 5
5393: PPUSH
5394: LD_VAR 0 3
5398: PPUSH
5399: CALL_OW 482
5403: PUSH
5404: LD_INT 1
5406: EQUAL
5407: AND
5408: IFFALSE 5424
// AddComResearch ( lab , i ) ;
5410: LD_VAR 0 2
5414: PPUSH
5415: LD_VAR 0 5
5419: PPUSH
5420: CALL_OW 184
5424: GO 5367
5426: POP
5427: POP
// end ;
5428: LD_VAR 0 4
5432: RET
// export function LinkRemoteVehicle ( side , area , build ) ; var i , list1 , list2 ; begin
5433: LD_INT 0
5435: PPUSH
5436: PPUSH
5437: PPUSH
5438: PPUSH
// list1 = FilterUnitsInArea ( area , [ [ f_side , side ] , [ f_type , unit_vehicle ] , [ f_lives , 251 ] , [ f_not , [ f_linked ] ] ] ) ;
5439: LD_ADDR_VAR 0 6
5443: PUSH
5444: LD_VAR 0 2
5448: PPUSH
5449: LD_INT 22
5451: PUSH
5452: LD_VAR 0 1
5456: PUSH
5457: EMPTY
5458: LIST
5459: LIST
5460: PUSH
5461: LD_INT 21
5463: PUSH
5464: LD_INT 2
5466: PUSH
5467: EMPTY
5468: LIST
5469: LIST
5470: PUSH
5471: LD_INT 24
5473: PUSH
5474: LD_INT 251
5476: PUSH
5477: EMPTY
5478: LIST
5479: LIST
5480: PUSH
5481: LD_INT 3
5483: PUSH
5484: LD_INT 61
5486: PUSH
5487: EMPTY
5488: LIST
5489: PUSH
5490: EMPTY
5491: LIST
5492: LIST
5493: PUSH
5494: EMPTY
5495: LIST
5496: LIST
5497: LIST
5498: LIST
5499: PPUSH
5500: CALL_OW 70
5504: ST_TO_ADDR
// list2 = UnitsInside ( build ) ;
5505: LD_ADDR_VAR 0 7
5509: PUSH
5510: LD_VAR 0 3
5514: PPUSH
5515: CALL_OW 313
5519: ST_TO_ADDR
// if not list1 or not list2 then
5520: LD_VAR 0 6
5524: NOT
5525: PUSH
5526: LD_VAR 0 7
5530: NOT
5531: OR
5532: IFFALSE 5536
// exit ;
5534: GO 5612
// if list1 > 0 and list2 > 0 then
5536: LD_VAR 0 6
5540: PUSH
5541: LD_INT 0
5543: GREATER
5544: PUSH
5545: LD_VAR 0 7
5549: PUSH
5550: LD_INT 0
5552: GREATER
5553: AND
5554: IFFALSE 5612
// for i = 1 to list1 do
5556: LD_ADDR_VAR 0 5
5560: PUSH
5561: DOUBLE
5562: LD_INT 1
5564: DEC
5565: ST_TO_ADDR
5566: LD_VAR 0 6
5570: PUSH
5571: FOR_TO
5572: IFFALSE 5610
// AddComLinkTo ( list1 [ i ] , list2 [ Rand ( 1 , list2 ) ] ) ;
5574: LD_VAR 0 6
5578: PUSH
5579: LD_VAR 0 5
5583: ARRAY
5584: PPUSH
5585: LD_VAR 0 7
5589: PUSH
5590: LD_INT 1
5592: PPUSH
5593: LD_VAR 0 7
5597: PPUSH
5598: CALL_OW 12
5602: ARRAY
5603: PPUSH
5604: CALL_OW 195
5608: GO 5571
5610: POP
5611: POP
// end ;
5612: LD_VAR 0 4
5616: RET
// export function DefendDepot ( side , build ) ; var i , j , tmpTab ; begin
5617: LD_INT 0
5619: PPUSH
5620: PPUSH
5621: PPUSH
5622: PPUSH
// AIDepotDest = 1 ;
5623: LD_ADDR_EXP 40
5627: PUSH
5628: LD_INT 1
5630: ST_TO_ADDR
// tmpTab = [ ] ;
5631: LD_ADDR_VAR 0 6
5635: PUSH
5636: EMPTY
5637: ST_TO_ADDR
// if FilterAllUnits ( [ [ f_side , side ] , [ f_btype , b_bunker ] ] ) > 0 then
5638: LD_INT 22
5640: PUSH
5641: LD_VAR 0 1
5645: PUSH
5646: EMPTY
5647: LIST
5648: LIST
5649: PUSH
5650: LD_INT 30
5652: PUSH
5653: LD_INT 32
5655: PUSH
5656: EMPTY
5657: LIST
5658: LIST
5659: PUSH
5660: EMPTY
5661: LIST
5662: LIST
5663: PPUSH
5664: CALL_OW 69
5668: PUSH
5669: LD_INT 0
5671: GREATER
5672: IFFALSE 5755
// begin for i in FilterAllUnits ( [ [ f_side , side ] , [ f_btype , b_bunker ] ] ) do
5674: LD_ADDR_VAR 0 4
5678: PUSH
5679: LD_INT 22
5681: PUSH
5682: LD_VAR 0 1
5686: PUSH
5687: EMPTY
5688: LIST
5689: LIST
5690: PUSH
5691: LD_INT 30
5693: PUSH
5694: LD_INT 32
5696: PUSH
5697: EMPTY
5698: LIST
5699: LIST
5700: PUSH
5701: EMPTY
5702: LIST
5703: LIST
5704: PPUSH
5705: CALL_OW 69
5709: PUSH
5710: FOR_IN
5711: IFFALSE 5753
// begin for j in UnitsInside ( i ) do
5713: LD_ADDR_VAR 0 5
5717: PUSH
5718: LD_VAR 0 4
5722: PPUSH
5723: CALL_OW 313
5727: PUSH
5728: FOR_IN
5729: IFFALSE 5749
// tmpTab = tmpTab ^ j ;
5731: LD_ADDR_VAR 0 6
5735: PUSH
5736: LD_VAR 0 6
5740: PUSH
5741: LD_VAR 0 5
5745: ADD
5746: ST_TO_ADDR
5747: GO 5728
5749: POP
5750: POP
// end ;
5751: GO 5710
5753: POP
5754: POP
// end ; ComAgressiveMove ( tmpTab , GetX ( build ) , GetY ( build ) ) ;
5755: LD_VAR 0 6
5759: PPUSH
5760: LD_VAR 0 2
5764: PPUSH
5765: CALL_OW 250
5769: PPUSH
5770: LD_VAR 0 2
5774: PPUSH
5775: CALL_OW 251
5779: PPUSH
5780: CALL_OW 114
// end ;
5784: LD_VAR 0 3
5788: RET
// export function EnterBunkerOrBarrack ( side , area ) ; var i , j , soldiers_list , turretList , temp , barrackList , insideUnits ; begin
5789: LD_INT 0
5791: PPUSH
5792: PPUSH
5793: PPUSH
5794: PPUSH
5795: PPUSH
5796: PPUSH
5797: PPUSH
5798: PPUSH
// soldiers_list = FilterUnitsInArea ( area , [ [ f_side , side ] , [ f_outside ] , [ f_lives , 700 ] , [ f_not , [ f_hastask ] ] , [ f_or , [ f_class , 1 ] , [ f_class , 5 ] , [ f_class , 8 ] , [ f_class , 9 ] ] ] ) ;
5799: LD_ADDR_VAR 0 6
5803: PUSH
5804: LD_VAR 0 2
5808: PPUSH
5809: LD_INT 22
5811: PUSH
5812: LD_VAR 0 1
5816: PUSH
5817: EMPTY
5818: LIST
5819: LIST
5820: PUSH
5821: LD_INT 56
5823: PUSH
5824: EMPTY
5825: LIST
5826: PUSH
5827: LD_INT 24
5829: PUSH
5830: LD_INT 700
5832: PUSH
5833: EMPTY
5834: LIST
5835: LIST
5836: PUSH
5837: LD_INT 3
5839: PUSH
5840: LD_INT 60
5842: PUSH
5843: EMPTY
5844: LIST
5845: PUSH
5846: EMPTY
5847: LIST
5848: LIST
5849: PUSH
5850: LD_INT 2
5852: PUSH
5853: LD_INT 25
5855: PUSH
5856: LD_INT 1
5858: PUSH
5859: EMPTY
5860: LIST
5861: LIST
5862: PUSH
5863: LD_INT 25
5865: PUSH
5866: LD_INT 5
5868: PUSH
5869: EMPTY
5870: LIST
5871: LIST
5872: PUSH
5873: LD_INT 25
5875: PUSH
5876: LD_INT 8
5878: PUSH
5879: EMPTY
5880: LIST
5881: LIST
5882: PUSH
5883: LD_INT 25
5885: PUSH
5886: LD_INT 9
5888: PUSH
5889: EMPTY
5890: LIST
5891: LIST
5892: PUSH
5893: EMPTY
5894: LIST
5895: LIST
5896: LIST
5897: LIST
5898: LIST
5899: PUSH
5900: EMPTY
5901: LIST
5902: LIST
5903: LIST
5904: LIST
5905: LIST
5906: PPUSH
5907: CALL_OW 70
5911: ST_TO_ADDR
// turretList = FilterUnitsInArea ( area , [ [ f_side , side ] , [ f_btype , b_bunker ] , [ f_empty ] , [ f_lives , 251 ] ] ) ;
5912: LD_ADDR_VAR 0 7
5916: PUSH
5917: LD_VAR 0 2
5921: PPUSH
5922: LD_INT 22
5924: PUSH
5925: LD_VAR 0 1
5929: PUSH
5930: EMPTY
5931: LIST
5932: LIST
5933: PUSH
5934: LD_INT 30
5936: PUSH
5937: LD_INT 32
5939: PUSH
5940: EMPTY
5941: LIST
5942: LIST
5943: PUSH
5944: LD_INT 58
5946: PUSH
5947: EMPTY
5948: LIST
5949: PUSH
5950: LD_INT 24
5952: PUSH
5953: LD_INT 251
5955: PUSH
5956: EMPTY
5957: LIST
5958: LIST
5959: PUSH
5960: EMPTY
5961: LIST
5962: LIST
5963: LIST
5964: LIST
5965: PPUSH
5966: CALL_OW 70
5970: ST_TO_ADDR
// barrackList = FilterUnitsInArea ( area , [ [ f_side , side ] , [ f_or , [ f_btype , 4 ] , [ f_btype , 5 ] ] , [ f_lives , 251 ] ] ) ;
5971: LD_ADDR_VAR 0 9
5975: PUSH
5976: LD_VAR 0 2
5980: PPUSH
5981: LD_INT 22
5983: PUSH
5984: LD_VAR 0 1
5988: PUSH
5989: EMPTY
5990: LIST
5991: LIST
5992: PUSH
5993: LD_INT 2
5995: PUSH
5996: LD_INT 30
5998: PUSH
5999: LD_INT 4
6001: PUSH
6002: EMPTY
6003: LIST
6004: LIST
6005: PUSH
6006: LD_INT 30
6008: PUSH
6009: LD_INT 5
6011: PUSH
6012: EMPTY
6013: LIST
6014: LIST
6015: PUSH
6016: EMPTY
6017: LIST
6018: LIST
6019: LIST
6020: PUSH
6021: LD_INT 24
6023: PUSH
6024: LD_INT 251
6026: PUSH
6027: EMPTY
6028: LIST
6029: LIST
6030: PUSH
6031: EMPTY
6032: LIST
6033: LIST
6034: LIST
6035: PPUSH
6036: CALL_OW 70
6040: ST_TO_ADDR
// if barrackList > 0 then
6041: LD_VAR 0 9
6045: PUSH
6046: LD_INT 0
6048: GREATER
6049: IFFALSE 6197
// begin if turretList = 0 then
6051: LD_VAR 0 7
6055: PUSH
6056: LD_INT 0
6058: EQUAL
6059: IFFALSE 6101
// begin if soldiers_list > 0 then
6061: LD_VAR 0 6
6065: PUSH
6066: LD_INT 0
6068: GREATER
6069: IFFALSE 6099
// ComEnterUnit ( soldiers_list , barrackList [ Rand ( 1 , barrackList ) ] ) ;
6071: LD_VAR 0 6
6075: PPUSH
6076: LD_VAR 0 9
6080: PUSH
6081: LD_INT 1
6083: PPUSH
6084: LD_VAR 0 9
6088: PPUSH
6089: CALL_OW 12
6093: ARRAY
6094: PPUSH
6095: CALL_OW 120
// end else
6099: GO 6197
// begin for i in barrackList do
6101: LD_ADDR_VAR 0 4
6105: PUSH
6106: LD_VAR 0 9
6110: PUSH
6111: FOR_IN
6112: IFFALSE 6195
// begin insideUnits = UnitsInside ( i ) ;
6114: LD_ADDR_VAR 0 10
6118: PUSH
6119: LD_VAR 0 4
6123: PPUSH
6124: CALL_OW 313
6128: ST_TO_ADDR
// if insideUnits > 0 then
6129: LD_VAR 0 10
6133: PUSH
6134: LD_INT 0
6136: GREATER
6137: IFFALSE 6161
// ComEnterUnit ( insideUnits [ 1 ] , turretList [ 1 ] ) ;
6139: LD_VAR 0 10
6143: PUSH
6144: LD_INT 1
6146: ARRAY
6147: PPUSH
6148: LD_VAR 0 7
6152: PUSH
6153: LD_INT 1
6155: ARRAY
6156: PPUSH
6157: CALL_OW 120
// if soldiers_list > 0 then
6161: LD_VAR 0 6
6165: PUSH
6166: LD_INT 0
6168: GREATER
6169: IFFALSE 6193
// ComEnterUnit ( soldiers_list [ 1 ] , turretList [ 1 ] ) ;
6171: LD_VAR 0 6
6175: PUSH
6176: LD_INT 1
6178: ARRAY
6179: PPUSH
6180: LD_VAR 0 7
6184: PUSH
6185: LD_INT 1
6187: ARRAY
6188: PPUSH
6189: CALL_OW 120
// end ;
6193: GO 6111
6195: POP
6196: POP
// end ; end ; end ;
6197: LD_VAR 0 3
6201: RET
// export function RepairAndRebuildBase ( side , building , area , destroyedBuildings ) ; var buildings_list , i , engineerOkInside , engineerOkOutside , j ; begin
6202: LD_INT 0
6204: PPUSH
6205: PPUSH
6206: PPUSH
6207: PPUSH
6208: PPUSH
6209: PPUSH
// engineerOkInside = UnitsInside ( building ) ;
6210: LD_ADDR_VAR 0 8
6214: PUSH
6215: LD_VAR 0 2
6219: PPUSH
6220: CALL_OW 313
6224: ST_TO_ADDR
// engineerOkOutside = FilterUnitsInArea ( area , [ [ f_side , side ] , [ f_class , 2 ] , [ f_lives , 750 ] , [ f_not , [ f_inside ] ] ] ) ;
6225: LD_ADDR_VAR 0 9
6229: PUSH
6230: LD_VAR 0 3
6234: PPUSH
6235: LD_INT 22
6237: PUSH
6238: LD_VAR 0 1
6242: PUSH
6243: EMPTY
6244: LIST
6245: LIST
6246: PUSH
6247: LD_INT 25
6249: PUSH
6250: LD_INT 2
6252: PUSH
6253: EMPTY
6254: LIST
6255: LIST
6256: PUSH
6257: LD_INT 24
6259: PUSH
6260: LD_INT 750
6262: PUSH
6263: EMPTY
6264: LIST
6265: LIST
6266: PUSH
6267: LD_INT 3
6269: PUSH
6270: LD_INT 54
6272: PUSH
6273: EMPTY
6274: LIST
6275: PUSH
6276: EMPTY
6277: LIST
6278: LIST
6279: PUSH
6280: EMPTY
6281: LIST
6282: LIST
6283: LIST
6284: LIST
6285: PPUSH
6286: CALL_OW 70
6290: ST_TO_ADDR
// buildings_list = FilterUnitsInArea ( area , [ [ [ f_side , side ] , [ f_type , unit_building ] , [ f_not , [ f_lives , 1000 ] ] ] ] ) ;
6291: LD_ADDR_VAR 0 6
6295: PUSH
6296: LD_VAR 0 3
6300: PPUSH
6301: LD_INT 22
6303: PUSH
6304: LD_VAR 0 1
6308: PUSH
6309: EMPTY
6310: LIST
6311: LIST
6312: PUSH
6313: LD_INT 21
6315: PUSH
6316: LD_INT 3
6318: PUSH
6319: EMPTY
6320: LIST
6321: LIST
6322: PUSH
6323: LD_INT 3
6325: PUSH
6326: LD_INT 24
6328: PUSH
6329: LD_INT 1000
6331: PUSH
6332: EMPTY
6333: LIST
6334: LIST
6335: PUSH
6336: EMPTY
6337: LIST
6338: LIST
6339: PUSH
6340: EMPTY
6341: LIST
6342: LIST
6343: LIST
6344: PUSH
6345: EMPTY
6346: LIST
6347: PPUSH
6348: CALL_OW 70
6352: ST_TO_ADDR
// if not buildings_list and not FilterAllUnits ( [ [ f_side , side ] , [ f_class , 2 ] , [ f_lives , 250 ] ] ) then
6353: LD_VAR 0 6
6357: NOT
6358: PUSH
6359: LD_INT 22
6361: PUSH
6362: LD_VAR 0 1
6366: PUSH
6367: EMPTY
6368: LIST
6369: LIST
6370: PUSH
6371: LD_INT 25
6373: PUSH
6374: LD_INT 2
6376: PUSH
6377: EMPTY
6378: LIST
6379: LIST
6380: PUSH
6381: LD_INT 24
6383: PUSH
6384: LD_INT 250
6386: PUSH
6387: EMPTY
6388: LIST
6389: LIST
6390: PUSH
6391: EMPTY
6392: LIST
6393: LIST
6394: LIST
6395: PPUSH
6396: CALL_OW 69
6400: NOT
6401: AND
6402: IFFALSE 6406
// exit ;
6404: GO 6588
// if buildings_list > 0 and engineerOkInside then
6406: LD_VAR 0 6
6410: PUSH
6411: LD_INT 0
6413: GREATER
6414: PUSH
6415: LD_VAR 0 8
6419: AND
6420: IFFALSE 6431
// ComExitBuilding ( engineerOkInside ) ;
6422: LD_VAR 0 8
6426: PPUSH
6427: CALL_OW 122
// if buildings_list > 0 and engineerOkOutside > 0 then
6431: LD_VAR 0 6
6435: PUSH
6436: LD_INT 0
6438: GREATER
6439: PUSH
6440: LD_VAR 0 9
6444: PUSH
6445: LD_INT 0
6447: GREATER
6448: AND
6449: IFFALSE 6469
// ComRepairBuilding ( engineerOkOutside , buildings_list [ 1 ] ) ;
6451: LD_VAR 0 9
6455: PPUSH
6456: LD_VAR 0 6
6460: PUSH
6461: LD_INT 1
6463: ARRAY
6464: PPUSH
6465: CALL_OW 130
// if buildings_list = 0 and destroyedBuildings = 0 and engineerOkOutside > 0 then
6469: LD_VAR 0 6
6473: PUSH
6474: LD_INT 0
6476: EQUAL
6477: PUSH
6478: LD_VAR 0 4
6482: PUSH
6483: LD_INT 0
6485: EQUAL
6486: AND
6487: PUSH
6488: LD_VAR 0 9
6492: PUSH
6493: LD_INT 0
6495: GREATER
6496: AND
6497: IFFALSE 6513
// ComEnterUnit ( engineerOkOutside , building ) ;
6499: LD_VAR 0 9
6503: PPUSH
6504: LD_VAR 0 2
6508: PPUSH
6509: CALL_OW 120
// if engineerOkOutside > 0 and buildings_list = 0 and destroyedBuildings > 0 then
6513: LD_VAR 0 9
6517: PUSH
6518: LD_INT 0
6520: GREATER
6521: PUSH
6522: LD_VAR 0 6
6526: PUSH
6527: LD_INT 0
6529: EQUAL
6530: AND
6531: PUSH
6532: LD_VAR 0 4
6536: PUSH
6537: LD_INT 0
6539: GREATER
6540: AND
6541: IFFALSE 6588
// ComBuild ( engineerOkOutside , destroyedBuildings [ 1 ] , destroyedBuildings [ 2 ] , destroyedBuildings [ 3 ] , destroyedBuildings [ 4 ] ) ;
6543: LD_VAR 0 9
6547: PPUSH
6548: LD_VAR 0 4
6552: PUSH
6553: LD_INT 1
6555: ARRAY
6556: PPUSH
6557: LD_VAR 0 4
6561: PUSH
6562: LD_INT 2
6564: ARRAY
6565: PPUSH
6566: LD_VAR 0 4
6570: PUSH
6571: LD_INT 3
6573: ARRAY
6574: PPUSH
6575: LD_VAR 0 4
6579: PUSH
6580: LD_INT 4
6582: ARRAY
6583: PPUSH
6584: CALL_OW 145
// end ;
6588: LD_VAR 0 5
6592: RET
// export function HealUnitInBase ( side , healArea , baseArea , build ) ; var sci_list , sci_listOutside , i , j , damageUnits , unitsToHeal , tmp , rnd ; begin
6593: LD_INT 0
6595: PPUSH
6596: PPUSH
6597: PPUSH
6598: PPUSH
6599: PPUSH
6600: PPUSH
6601: PPUSH
6602: PPUSH
6603: PPUSH
// sci_list = FilterAllUnits ( [ [ f_side , side ] , [ f_class , 4 ] , [ f_nation , 2 ] , [ f_lives , 251 ] ] ) ;
6604: LD_ADDR_VAR 0 6
6608: PUSH
6609: LD_INT 22
6611: PUSH
6612: LD_VAR 0 1
6616: PUSH
6617: EMPTY
6618: LIST
6619: LIST
6620: PUSH
6621: LD_INT 25
6623: PUSH
6624: LD_INT 4
6626: PUSH
6627: EMPTY
6628: LIST
6629: LIST
6630: PUSH
6631: LD_INT 23
6633: PUSH
6634: LD_INT 2
6636: PUSH
6637: EMPTY
6638: LIST
6639: LIST
6640: PUSH
6641: LD_INT 24
6643: PUSH
6644: LD_INT 251
6646: PUSH
6647: EMPTY
6648: LIST
6649: LIST
6650: PUSH
6651: EMPTY
6652: LIST
6653: LIST
6654: LIST
6655: LIST
6656: PPUSH
6657: CALL_OW 69
6661: ST_TO_ADDR
// sci_listOutside = FilterUnitsInArea ( baseArea , [ [ f_side , side ] , [ f_nation , 2 ] , [ f_class , 4 ] , [ f_ok ] ] ) ;
6662: LD_ADDR_VAR 0 7
6666: PUSH
6667: LD_VAR 0 3
6671: PPUSH
6672: LD_INT 22
6674: PUSH
6675: LD_VAR 0 1
6679: PUSH
6680: EMPTY
6681: LIST
6682: LIST
6683: PUSH
6684: LD_INT 23
6686: PUSH
6687: LD_INT 2
6689: PUSH
6690: EMPTY
6691: LIST
6692: LIST
6693: PUSH
6694: LD_INT 25
6696: PUSH
6697: LD_INT 4
6699: PUSH
6700: EMPTY
6701: LIST
6702: LIST
6703: PUSH
6704: LD_INT 50
6706: PUSH
6707: EMPTY
6708: LIST
6709: PUSH
6710: EMPTY
6711: LIST
6712: LIST
6713: LIST
6714: LIST
6715: PPUSH
6716: CALL_OW 70
6720: ST_TO_ADDR
// damageUnits = FilterUnitsInArea ( baseArea , [ [ f_side , side ] , [ f_type , unit_human ] , [ f_not , [ f_class , 3 ] ] , [ f_not , [ f_lives , 750 ] ] ] ) ;
6721: LD_ADDR_VAR 0 10
6725: PUSH
6726: LD_VAR 0 3
6730: PPUSH
6731: LD_INT 22
6733: PUSH
6734: LD_VAR 0 1
6738: PUSH
6739: EMPTY
6740: LIST
6741: LIST
6742: PUSH
6743: LD_INT 21
6745: PUSH
6746: LD_INT 1
6748: PUSH
6749: EMPTY
6750: LIST
6751: LIST
6752: PUSH
6753: LD_INT 3
6755: PUSH
6756: LD_INT 25
6758: PUSH
6759: LD_INT 3
6761: PUSH
6762: EMPTY
6763: LIST
6764: LIST
6765: PUSH
6766: EMPTY
6767: LIST
6768: LIST
6769: PUSH
6770: LD_INT 3
6772: PUSH
6773: LD_INT 24
6775: PUSH
6776: LD_INT 750
6778: PUSH
6779: EMPTY
6780: LIST
6781: LIST
6782: PUSH
6783: EMPTY
6784: LIST
6785: LIST
6786: PUSH
6787: EMPTY
6788: LIST
6789: LIST
6790: LIST
6791: LIST
6792: PPUSH
6793: CALL_OW 70
6797: ST_TO_ADDR
// unitsToHeal = FilterUnitsInArea ( healArea , [ [ f_side , side ] , [ f_type , unit_human ] , [ f_not , [ f_class , 3 ] ] , [ f_not , [ f_lives , 1000 ] ] ] ) ;
6798: LD_ADDR_VAR 0 11
6802: PUSH
6803: LD_VAR 0 2
6807: PPUSH
6808: LD_INT 22
6810: PUSH
6811: LD_VAR 0 1
6815: PUSH
6816: EMPTY
6817: LIST
6818: LIST
6819: PUSH
6820: LD_INT 21
6822: PUSH
6823: LD_INT 1
6825: PUSH
6826: EMPTY
6827: LIST
6828: LIST
6829: PUSH
6830: LD_INT 3
6832: PUSH
6833: LD_INT 25
6835: PUSH
6836: LD_INT 3
6838: PUSH
6839: EMPTY
6840: LIST
6841: LIST
6842: PUSH
6843: EMPTY
6844: LIST
6845: LIST
6846: PUSH
6847: LD_INT 3
6849: PUSH
6850: LD_INT 24
6852: PUSH
6853: LD_INT 1000
6855: PUSH
6856: EMPTY
6857: LIST
6858: LIST
6859: PUSH
6860: EMPTY
6861: LIST
6862: LIST
6863: PUSH
6864: EMPTY
6865: LIST
6866: LIST
6867: LIST
6868: LIST
6869: PPUSH
6870: CALL_OW 70
6874: ST_TO_ADDR
// if not damageUnits and not unitsToHeal and not sci_list then
6875: LD_VAR 0 10
6879: NOT
6880: PUSH
6881: LD_VAR 0 11
6885: NOT
6886: AND
6887: PUSH
6888: LD_VAR 0 6
6892: NOT
6893: AND
6894: IFFALSE 6898
// exit ;
6896: GO 7132
// if damageUnits > 0 and sci_list > 0 then
6898: LD_VAR 0 10
6902: PUSH
6903: LD_INT 0
6905: GREATER
6906: PUSH
6907: LD_VAR 0 6
6911: PUSH
6912: LD_INT 0
6914: GREATER
6915: AND
6916: IFFALSE 6932
// ComMoveToArea ( damageUnits , healArea ) ;
6918: LD_VAR 0 10
6922: PPUSH
6923: LD_VAR 0 2
6927: PPUSH
6928: CALL_OW 113
// if unitsToHeal > 0 and sci_list > 0 then
6932: LD_VAR 0 11
6936: PUSH
6937: LD_INT 0
6939: GREATER
6940: PUSH
6941: LD_VAR 0 6
6945: PUSH
6946: LD_INT 0
6948: GREATER
6949: AND
6950: IFFALSE 6961
// ComExitBuilding ( sci_list ) ;
6952: LD_VAR 0 6
6956: PPUSH
6957: CALL_OW 122
// if unitsToHeal > 0 and sci_listOutside > 0 then
6961: LD_VAR 0 11
6965: PUSH
6966: LD_INT 0
6968: GREATER
6969: PUSH
6970: LD_VAR 0 7
6974: PUSH
6975: LD_INT 0
6977: GREATER
6978: AND
6979: IFFALSE 6999
// ComHeal ( sci_listOutside , unitsToHeal [ 1 ] ) ;
6981: LD_VAR 0 7
6985: PPUSH
6986: LD_VAR 0 11
6990: PUSH
6991: LD_INT 1
6993: ARRAY
6994: PPUSH
6995: CALL_OW 128
// if damageUnits = 0 and unitsToHeal = 0 and sci_listOutside > 0 then
6999: LD_VAR 0 10
7003: PUSH
7004: LD_INT 0
7006: EQUAL
7007: PUSH
7008: LD_VAR 0 11
7012: PUSH
7013: LD_INT 0
7015: EQUAL
7016: AND
7017: PUSH
7018: LD_VAR 0 7
7022: PUSH
7023: LD_INT 0
7025: GREATER
7026: AND
7027: IFFALSE 7132
// begin tmp = FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_building ] , [ f_btype , b_lab_full ] ] ) ;
7029: LD_ADDR_VAR 0 12
7033: PUSH
7034: LD_INT 22
7036: PUSH
7037: LD_VAR 0 1
7041: PUSH
7042: EMPTY
7043: LIST
7044: LIST
7045: PUSH
7046: LD_INT 21
7048: PUSH
7049: LD_INT 3
7051: PUSH
7052: EMPTY
7053: LIST
7054: LIST
7055: PUSH
7056: LD_INT 30
7058: PUSH
7059: LD_INT 8
7061: PUSH
7062: EMPTY
7063: LIST
7064: LIST
7065: PUSH
7066: EMPTY
7067: LIST
7068: LIST
7069: LIST
7070: PPUSH
7071: CALL_OW 69
7075: ST_TO_ADDR
// rnd = rand ( 1 , tmp ) ;
7076: LD_ADDR_VAR 0 13
7080: PUSH
7081: LD_INT 1
7083: PPUSH
7084: LD_VAR 0 12
7088: PPUSH
7089: CALL_OW 12
7093: ST_TO_ADDR
// ComEnterUnit ( UnitFilter ( sci_listOutside , [ f_not , [ f_hastask ] ] ) , tmp [ rnd ] ) ;
7094: LD_VAR 0 7
7098: PPUSH
7099: LD_INT 3
7101: PUSH
7102: LD_INT 60
7104: PUSH
7105: EMPTY
7106: LIST
7107: PUSH
7108: EMPTY
7109: LIST
7110: LIST
7111: PPUSH
7112: CALL_OW 72
7116: PPUSH
7117: LD_VAR 0 12
7121: PUSH
7122: LD_VAR 0 13
7126: ARRAY
7127: PPUSH
7128: CALL_OW 120
// end ; end ;
7132: LD_VAR 0 5
7136: RET
// export function BuildingVehicleEnemy ( fabric , vehCount , weaponTab , engine , control , chassis ) ; var i , weapon ; begin
7137: LD_INT 0
7139: PPUSH
7140: PPUSH
7141: PPUSH
// for i = 1 to vehCount do
7142: LD_ADDR_VAR 0 8
7146: PUSH
7147: DOUBLE
7148: LD_INT 1
7150: DEC
7151: ST_TO_ADDR
7152: LD_VAR 0 2
7156: PUSH
7157: FOR_TO
7158: IFFALSE 7205
// AddComConstruct ( fabric , chassis , engine , control , weaponTab [ Rand ( 1 , weaponTab ) ] ) ;
7160: LD_VAR 0 1
7164: PPUSH
7165: LD_VAR 0 6
7169: PPUSH
7170: LD_VAR 0 4
7174: PPUSH
7175: LD_VAR 0 5
7179: PPUSH
7180: LD_VAR 0 3
7184: PUSH
7185: LD_INT 1
7187: PPUSH
7188: LD_VAR 0 3
7192: PPUSH
7193: CALL_OW 12
7197: ARRAY
7198: PPUSH
7199: CALL_OW 185
7203: GO 7157
7205: POP
7206: POP
// end ;
7207: LD_VAR 0 7
7211: RET
// export function EnemyVehicleAttack ( side ) ; var i , tmp , target1 , target2 ; begin
7212: LD_INT 0
7214: PPUSH
7215: PPUSH
7216: PPUSH
7217: PPUSH
7218: PPUSH
// repeat wait ( 0 0$1 ) ;
7219: LD_INT 35
7221: PPUSH
7222: CALL_OW 67
// if FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_vehicle ] ] ) > 0 then
7226: LD_INT 22
7228: PUSH
7229: LD_VAR 0 1
7233: PUSH
7234: EMPTY
7235: LIST
7236: LIST
7237: PUSH
7238: LD_INT 21
7240: PUSH
7241: LD_INT 2
7243: PUSH
7244: EMPTY
7245: LIST
7246: LIST
7247: PUSH
7248: EMPTY
7249: LIST
7250: LIST
7251: PPUSH
7252: CALL_OW 69
7256: PUSH
7257: LD_INT 0
7259: GREATER
7260: IFFALSE 7484
// begin for i in FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_vehicle ] ] ) do
7262: LD_ADDR_VAR 0 3
7266: PUSH
7267: LD_INT 22
7269: PUSH
7270: LD_VAR 0 1
7274: PUSH
7275: EMPTY
7276: LIST
7277: LIST
7278: PUSH
7279: LD_INT 21
7281: PUSH
7282: LD_INT 2
7284: PUSH
7285: EMPTY
7286: LIST
7287: LIST
7288: PUSH
7289: EMPTY
7290: LIST
7291: LIST
7292: PPUSH
7293: CALL_OW 69
7297: PUSH
7298: FOR_IN
7299: IFFALSE 7482
// begin wait ( 0 0$1 ) ;
7301: LD_INT 35
7303: PPUSH
7304: CALL_OW 67
// target1 := NearestUnitToUnit ( FilterAllUnits ( [ f_enemy , Side ] ) , i ) ;
7308: LD_ADDR_VAR 0 5
7312: PUSH
7313: LD_INT 81
7315: PUSH
7316: LD_VAR 0 1
7320: PUSH
7321: EMPTY
7322: LIST
7323: LIST
7324: PPUSH
7325: CALL_OW 69
7329: PPUSH
7330: LD_VAR 0 3
7334: PPUSH
7335: CALL_OW 74
7339: ST_TO_ADDR
// target2 := NearestUnitToUnit ( FilterAllUnits ( [ [ [ f_enemy , Side ] , [ f_or , [ f_occupied ] , [ f_type , unit_human ] , [ f_type , unit_vehicle ] ] ] ] ) , i ) ;
7340: LD_ADDR_VAR 0 6
7344: PUSH
7345: LD_INT 81
7347: PUSH
7348: LD_VAR 0 1
7352: PUSH
7353: EMPTY
7354: LIST
7355: LIST
7356: PUSH
7357: LD_INT 2
7359: PUSH
7360: LD_INT 59
7362: PUSH
7363: EMPTY
7364: LIST
7365: PUSH
7366: LD_INT 21
7368: PUSH
7369: LD_INT 1
7371: PUSH
7372: EMPTY
7373: LIST
7374: LIST
7375: PUSH
7376: LD_INT 21
7378: PUSH
7379: LD_INT 2
7381: PUSH
7382: EMPTY
7383: LIST
7384: LIST
7385: PUSH
7386: EMPTY
7387: LIST
7388: LIST
7389: LIST
7390: LIST
7391: PUSH
7392: EMPTY
7393: LIST
7394: LIST
7395: PUSH
7396: EMPTY
7397: LIST
7398: PPUSH
7399: CALL_OW 69
7403: PPUSH
7404: LD_VAR 0 3
7408: PPUSH
7409: CALL_OW 74
7413: ST_TO_ADDR
// if GetDistUnits ( i , target1 ) + 8 < GetDistUnits ( i , target2 ) then
7414: LD_VAR 0 3
7418: PPUSH
7419: LD_VAR 0 5
7423: PPUSH
7424: CALL_OW 296
7428: PUSH
7429: LD_INT 8
7431: PLUS
7432: PUSH
7433: LD_VAR 0 3
7437: PPUSH
7438: LD_VAR 0 6
7442: PPUSH
7443: CALL_OW 296
7447: LESS
7448: IFFALSE 7466
// begin ComAttackUnit ( i , target1 ) ;
7450: LD_VAR 0 3
7454: PPUSH
7455: LD_VAR 0 5
7459: PPUSH
7460: CALL_OW 115
// end else
7464: GO 7480
// begin ComAttackUnit ( i , target2 ) ;
7466: LD_VAR 0 3
7470: PPUSH
7471: LD_VAR 0 6
7475: PPUSH
7476: CALL_OW 115
// end ; end ;
7480: GO 7298
7482: POP
7483: POP
// end ; until FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_vehicle ] , [ f_lives , 250 ] ] ) = 0 ;
7484: LD_INT 22
7486: PUSH
7487: LD_VAR 0 1
7491: PUSH
7492: EMPTY
7493: LIST
7494: LIST
7495: PUSH
7496: LD_INT 21
7498: PUSH
7499: LD_INT 2
7501: PUSH
7502: EMPTY
7503: LIST
7504: LIST
7505: PUSH
7506: LD_INT 24
7508: PUSH
7509: LD_INT 250
7511: PUSH
7512: EMPTY
7513: LIST
7514: LIST
7515: PUSH
7516: EMPTY
7517: LIST
7518: LIST
7519: LIST
7520: PPUSH
7521: CALL_OW 69
7525: PUSH
7526: LD_INT 0
7528: EQUAL
7529: IFFALSE 7219
// end ;
7531: LD_VAR 0 2
7535: RET
// export function RespawnAttackVehicle ( area , side , vehCount , mehskill , nation , vehEngine , vehControl , RUWeapons , ARWeapons , AMWeapon , targetSide ) ; var i , j , un , veh , ruChassisTab , arChassisTab , amChassisTab , vehicleOK_list , target1 , target2 ; begin
7536: LD_INT 0
7538: PPUSH
7539: PPUSH
7540: PPUSH
7541: PPUSH
7542: PPUSH
7543: PPUSH
7544: PPUSH
7545: PPUSH
7546: PPUSH
7547: PPUSH
7548: PPUSH
// amChassisTab = [ ] ;
7549: LD_ADDR_VAR 0 19
7553: PUSH
7554: EMPTY
7555: ST_TO_ADDR
// arChassisTab = [ ] ;
7556: LD_ADDR_VAR 0 18
7560: PUSH
7561: EMPTY
7562: ST_TO_ADDR
// ruChassisTab = [ ] ;
7563: LD_ADDR_VAR 0 17
7567: PUSH
7568: EMPTY
7569: ST_TO_ADDR
// repeat wait ( 0 0$01 ) ;
7570: LD_INT 35
7572: PPUSH
7573: CALL_OW 67
// if nation = 1 then
7577: LD_VAR 0 5
7581: PUSH
7582: LD_INT 1
7584: EQUAL
7585: IFFALSE 8079
// begin uc_side = side ;
7587: LD_ADDR_OWVAR 20
7591: PUSH
7592: LD_VAR 0 2
7596: ST_TO_ADDR
// uc_nation = nation ;
7597: LD_ADDR_OWVAR 21
7601: PUSH
7602: LD_VAR 0 5
7606: ST_TO_ADDR
// vc_engine = vehengine ;
7607: LD_ADDR_OWVAR 39
7611: PUSH
7612: LD_VAR 0 6
7616: ST_TO_ADDR
// vc_control = vehControl [ Rand ( 1 , vehControl ) ] ;
7617: LD_ADDR_OWVAR 38
7621: PUSH
7622: LD_VAR 0 7
7626: PUSH
7627: LD_INT 1
7629: PPUSH
7630: LD_VAR 0 7
7634: PPUSH
7635: CALL_OW 12
7639: ARRAY
7640: ST_TO_ADDR
// vc_weapon = AMWeapon [ Rand ( 1 , AMWeapon ) ] ;
7641: LD_ADDR_OWVAR 40
7645: PUSH
7646: LD_VAR 0 10
7650: PUSH
7651: LD_INT 1
7653: PPUSH
7654: LD_VAR 0 10
7658: PPUSH
7659: CALL_OW 12
7663: ARRAY
7664: ST_TO_ADDR
// if vc_weapon = 2 or vc_weapon = 3 then
7665: LD_OWVAR 40
7669: PUSH
7670: LD_INT 2
7672: EQUAL
7673: PUSH
7674: LD_OWVAR 40
7678: PUSH
7679: LD_INT 3
7681: EQUAL
7682: OR
7683: IFFALSE 7736
// begin amChassisTab = [ 1 , 2 , 3 , 4 , 5 ] ;
7685: LD_ADDR_VAR 0 19
7689: PUSH
7690: LD_INT 1
7692: PUSH
7693: LD_INT 2
7695: PUSH
7696: LD_INT 3
7698: PUSH
7699: LD_INT 4
7701: PUSH
7702: LD_INT 5
7704: PUSH
7705: EMPTY
7706: LIST
7707: LIST
7708: LIST
7709: LIST
7710: LIST
7711: ST_TO_ADDR
// vc_chassis = amChassisTab [ Rand ( 1 , amChassisTab ) ] ;
7712: LD_ADDR_OWVAR 37
7716: PUSH
7717: LD_VAR 0 19
7721: PUSH
7722: LD_INT 1
7724: PPUSH
7725: LD_VAR 0 19
7729: PPUSH
7730: CALL_OW 12
7734: ARRAY
7735: ST_TO_ADDR
// end ; if vc_weapon = 4 or vc_weapon = 5 or vc_weapon = 9 or vc_weapon = 11 or vc_weapon = 7 then
7736: LD_OWVAR 40
7740: PUSH
7741: LD_INT 4
7743: EQUAL
7744: PUSH
7745: LD_OWVAR 40
7749: PUSH
7750: LD_INT 5
7752: EQUAL
7753: OR
7754: PUSH
7755: LD_OWVAR 40
7759: PUSH
7760: LD_INT 9
7762: EQUAL
7763: OR
7764: PUSH
7765: LD_OWVAR 40
7769: PUSH
7770: LD_INT 11
7772: EQUAL
7773: OR
7774: PUSH
7775: LD_OWVAR 40
7779: PUSH
7780: LD_INT 7
7782: EQUAL
7783: OR
7784: IFFALSE 7833
// begin amChassisTab = [ 2 , 3 , 4 , 5 ] ;
7786: LD_ADDR_VAR 0 19
7790: PUSH
7791: LD_INT 2
7793: PUSH
7794: LD_INT 3
7796: PUSH
7797: LD_INT 4
7799: PUSH
7800: LD_INT 5
7802: PUSH
7803: EMPTY
7804: LIST
7805: LIST
7806: LIST
7807: LIST
7808: ST_TO_ADDR
// vc_chassis = amChassisTab [ Rand ( 1 , amChassisTab ) ] ;
7809: LD_ADDR_OWVAR 37
7813: PUSH
7814: LD_VAR 0 19
7818: PUSH
7819: LD_INT 1
7821: PPUSH
7822: LD_VAR 0 19
7826: PPUSH
7827: CALL_OW 12
7831: ARRAY
7832: ST_TO_ADDR
// end ; if vc_weapon = 8 or vc_weapon = 6 or vc_weapon = 10 then
7833: LD_OWVAR 40
7837: PUSH
7838: LD_INT 8
7840: EQUAL
7841: PUSH
7842: LD_OWVAR 40
7846: PUSH
7847: LD_INT 6
7849: EQUAL
7850: OR
7851: PUSH
7852: LD_OWVAR 40
7856: PUSH
7857: LD_INT 10
7859: EQUAL
7860: OR
7861: IFFALSE 7902
// begin amChassisTab = [ 4 , 5 ] ;
7863: LD_ADDR_VAR 0 19
7867: PUSH
7868: LD_INT 4
7870: PUSH
7871: LD_INT 5
7873: PUSH
7874: EMPTY
7875: LIST
7876: LIST
7877: ST_TO_ADDR
// vc_chassis = amChassisTab [ Rand ( 1 , amChassisTab ) ] ;
7878: LD_ADDR_OWVAR 37
7882: PUSH
7883: LD_VAR 0 19
7887: PUSH
7888: LD_INT 1
7890: PPUSH
7891: LD_VAR 0 19
7895: PPUSH
7896: CALL_OW 12
7900: ARRAY
7901: ST_TO_ADDR
// end ; veh = CreateVehicle ;
7902: LD_ADDR_VAR 0 16
7906: PUSH
7907: CALL_OW 45
7911: ST_TO_ADDR
// PlaceUnitArea ( veh , area , false ) ;
7912: LD_VAR 0 16
7916: PPUSH
7917: LD_VAR 0 1
7921: PPUSH
7922: LD_INT 0
7924: PPUSH
7925: CALL_OW 49
// if vc_control = 1 then
7929: LD_OWVAR 38
7933: PUSH
7934: LD_INT 1
7936: EQUAL
7937: IFFALSE 8065
// begin hc_gallery =  ;
7939: LD_ADDR_OWVAR 33
7943: PUSH
7944: LD_STRING 
7946: ST_TO_ADDR
// hc_name =  ;
7947: LD_ADDR_OWVAR 26
7951: PUSH
7952: LD_STRING 
7954: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
7955: LD_ADDR_OWVAR 29
7959: PUSH
7960: LD_INT 9
7962: PPUSH
7963: LD_INT 11
7965: PPUSH
7966: CALL_OW 12
7970: PUSH
7971: LD_INT 10
7973: PPUSH
7974: LD_INT 12
7976: PPUSH
7977: CALL_OW 12
7981: PUSH
7982: EMPTY
7983: LIST
7984: LIST
7985: ST_TO_ADDR
// hc_skills = [ mehskill , mehskill , mehskill , mehskill ] ;
7986: LD_ADDR_OWVAR 31
7990: PUSH
7991: LD_VAR 0 4
7995: PUSH
7996: LD_VAR 0 4
8000: PUSH
8001: LD_VAR 0 4
8005: PUSH
8006: LD_VAR 0 4
8010: PUSH
8011: EMPTY
8012: LIST
8013: LIST
8014: LIST
8015: LIST
8016: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
8017: LD_ADDR_OWVAR 27
8021: PUSH
8022: LD_INT 1
8024: PPUSH
8025: LD_INT 2
8027: PPUSH
8028: CALL_OW 12
8032: ST_TO_ADDR
// hc_class = 3 ;
8033: LD_ADDR_OWVAR 28
8037: PUSH
8038: LD_INT 3
8040: ST_TO_ADDR
// un = CreateHuman ;
8041: LD_ADDR_VAR 0 15
8045: PUSH
8046: CALL_OW 44
8050: ST_TO_ADDR
// PlaceHumanInUnit ( un , veh ) ;
8051: LD_VAR 0 15
8055: PPUSH
8056: LD_VAR 0 16
8060: PPUSH
8061: CALL_OW 52
// end ; i = i + 1 ;
8065: LD_ADDR_VAR 0 13
8069: PUSH
8070: LD_VAR 0 13
8074: PUSH
8075: LD_INT 1
8077: PLUS
8078: ST_TO_ADDR
// end ; if nation = 2 then
8079: LD_VAR 0 5
8083: PUSH
8084: LD_INT 2
8086: EQUAL
8087: IFFALSE 8504
// begin uc_side = side ;
8089: LD_ADDR_OWVAR 20
8093: PUSH
8094: LD_VAR 0 2
8098: ST_TO_ADDR
// uc_nation = nation ;
8099: LD_ADDR_OWVAR 21
8103: PUSH
8104: LD_VAR 0 5
8108: ST_TO_ADDR
// vc_engine = vehengine ;
8109: LD_ADDR_OWVAR 39
8113: PUSH
8114: LD_VAR 0 6
8118: ST_TO_ADDR
// vc_control = vehControl [ Rand ( 1 , vehControl ) ] ;
8119: LD_ADDR_OWVAR 38
8123: PUSH
8124: LD_VAR 0 7
8128: PUSH
8129: LD_INT 1
8131: PPUSH
8132: LD_VAR 0 7
8136: PPUSH
8137: CALL_OW 12
8141: ARRAY
8142: ST_TO_ADDR
// vc_weapon = ARWeapons [ Rand ( 1 , ARWeapons ) ] ;
8143: LD_ADDR_OWVAR 40
8147: PUSH
8148: LD_VAR 0 9
8152: PUSH
8153: LD_INT 1
8155: PPUSH
8156: LD_VAR 0 9
8160: PPUSH
8161: CALL_OW 12
8165: ARRAY
8166: ST_TO_ADDR
// if vc_weapon = 24 or vc_weapon = 22 or vc_weapon = 23 or vc_weapon = 30 then
8167: LD_OWVAR 40
8171: PUSH
8172: LD_INT 24
8174: EQUAL
8175: PUSH
8176: LD_OWVAR 40
8180: PUSH
8181: LD_INT 22
8183: EQUAL
8184: OR
8185: PUSH
8186: LD_OWVAR 40
8190: PUSH
8191: LD_INT 23
8193: EQUAL
8194: OR
8195: PUSH
8196: LD_OWVAR 40
8200: PUSH
8201: LD_INT 30
8203: EQUAL
8204: OR
8205: IFFALSE 8242
// begin arChassisTab = [ 14 ] ;
8207: LD_ADDR_VAR 0 18
8211: PUSH
8212: LD_INT 14
8214: PUSH
8215: EMPTY
8216: LIST
8217: ST_TO_ADDR
// vc_chassis = arChassisTab [ Rand ( 1 , arChassisTab ) ] ;
8218: LD_ADDR_OWVAR 37
8222: PUSH
8223: LD_VAR 0 18
8227: PUSH
8228: LD_INT 1
8230: PPUSH
8231: LD_VAR 0 18
8235: PPUSH
8236: CALL_OW 12
8240: ARRAY
8241: ST_TO_ADDR
// end ; if vc_weapon = 29 or vc_weapon = 28 or vc_weapon = 27 or vc_weapon = 26 or vc_weapon = 25 then
8242: LD_OWVAR 40
8246: PUSH
8247: LD_INT 29
8249: EQUAL
8250: PUSH
8251: LD_OWVAR 40
8255: PUSH
8256: LD_INT 28
8258: EQUAL
8259: OR
8260: PUSH
8261: LD_OWVAR 40
8265: PUSH
8266: LD_INT 27
8268: EQUAL
8269: OR
8270: PUSH
8271: LD_OWVAR 40
8275: PUSH
8276: LD_INT 26
8278: EQUAL
8279: OR
8280: PUSH
8281: LD_OWVAR 40
8285: PUSH
8286: LD_INT 25
8288: EQUAL
8289: OR
8290: IFFALSE 8327
// begin arChassisTab = [ 14 ] ;
8292: LD_ADDR_VAR 0 18
8296: PUSH
8297: LD_INT 14
8299: PUSH
8300: EMPTY
8301: LIST
8302: ST_TO_ADDR
// vc_chassis = arChassisTab [ Rand ( 1 , arChassisTab ) ] ;
8303: LD_ADDR_OWVAR 37
8307: PUSH
8308: LD_VAR 0 18
8312: PUSH
8313: LD_INT 1
8315: PPUSH
8316: LD_VAR 0 18
8320: PPUSH
8321: CALL_OW 12
8325: ARRAY
8326: ST_TO_ADDR
// end ; veh = CreateVehicle ;
8327: LD_ADDR_VAR 0 16
8331: PUSH
8332: CALL_OW 45
8336: ST_TO_ADDR
// PlaceUnitArea ( veh , area , false ) ;
8337: LD_VAR 0 16
8341: PPUSH
8342: LD_VAR 0 1
8346: PPUSH
8347: LD_INT 0
8349: PPUSH
8350: CALL_OW 49
// if vc_control = 1 then
8354: LD_OWVAR 38
8358: PUSH
8359: LD_INT 1
8361: EQUAL
8362: IFFALSE 8490
// begin hc_gallery =  ;
8364: LD_ADDR_OWVAR 33
8368: PUSH
8369: LD_STRING 
8371: ST_TO_ADDR
// hc_name =  ;
8372: LD_ADDR_OWVAR 26
8376: PUSH
8377: LD_STRING 
8379: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
8380: LD_ADDR_OWVAR 29
8384: PUSH
8385: LD_INT 9
8387: PPUSH
8388: LD_INT 11
8390: PPUSH
8391: CALL_OW 12
8395: PUSH
8396: LD_INT 10
8398: PPUSH
8399: LD_INT 12
8401: PPUSH
8402: CALL_OW 12
8406: PUSH
8407: EMPTY
8408: LIST
8409: LIST
8410: ST_TO_ADDR
// hc_skills = [ mehskill , mehskill , mehskill , mehskill ] ;
8411: LD_ADDR_OWVAR 31
8415: PUSH
8416: LD_VAR 0 4
8420: PUSH
8421: LD_VAR 0 4
8425: PUSH
8426: LD_VAR 0 4
8430: PUSH
8431: LD_VAR 0 4
8435: PUSH
8436: EMPTY
8437: LIST
8438: LIST
8439: LIST
8440: LIST
8441: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
8442: LD_ADDR_OWVAR 27
8446: PUSH
8447: LD_INT 1
8449: PPUSH
8450: LD_INT 2
8452: PPUSH
8453: CALL_OW 12
8457: ST_TO_ADDR
// hc_class = 3 ;
8458: LD_ADDR_OWVAR 28
8462: PUSH
8463: LD_INT 3
8465: ST_TO_ADDR
// un = CreateHuman ;
8466: LD_ADDR_VAR 0 15
8470: PUSH
8471: CALL_OW 44
8475: ST_TO_ADDR
// PlaceHumanInUnit ( un , veh ) ;
8476: LD_VAR 0 15
8480: PPUSH
8481: LD_VAR 0 16
8485: PPUSH
8486: CALL_OW 52
// end ; i = i + 1 ;
8490: LD_ADDR_VAR 0 13
8494: PUSH
8495: LD_VAR 0 13
8499: PUSH
8500: LD_INT 1
8502: PLUS
8503: ST_TO_ADDR
// end ; if nation = 3 then
8504: LD_VAR 0 5
8508: PUSH
8509: LD_INT 3
8511: EQUAL
8512: IFFALSE 8925
// begin uc_side = side ;
8514: LD_ADDR_OWVAR 20
8518: PUSH
8519: LD_VAR 0 2
8523: ST_TO_ADDR
// uc_nation = nation ;
8524: LD_ADDR_OWVAR 21
8528: PUSH
8529: LD_VAR 0 5
8533: ST_TO_ADDR
// vc_engine = vehengine ;
8534: LD_ADDR_OWVAR 39
8538: PUSH
8539: LD_VAR 0 6
8543: ST_TO_ADDR
// vc_control = vehControl [ Rand ( 1 , vehControl ) ] ;
8544: LD_ADDR_OWVAR 38
8548: PUSH
8549: LD_VAR 0 7
8553: PUSH
8554: LD_INT 1
8556: PPUSH
8557: LD_VAR 0 7
8561: PPUSH
8562: CALL_OW 12
8566: ARRAY
8567: ST_TO_ADDR
// vc_weapon = RUWeapons [ Rand ( 1 , RUWeapons ) ] ;
8568: LD_ADDR_OWVAR 40
8572: PUSH
8573: LD_VAR 0 8
8577: PUSH
8578: LD_INT 1
8580: PPUSH
8581: LD_VAR 0 8
8585: PPUSH
8586: CALL_OW 12
8590: ARRAY
8591: ST_TO_ADDR
// if vc_weapon = 42 or vc_weapon = 43 or vc_weapon = 44 or vc_weapon = 45 or vc_weapon = 49 then
8592: LD_OWVAR 40
8596: PUSH
8597: LD_INT 42
8599: EQUAL
8600: PUSH
8601: LD_OWVAR 40
8605: PUSH
8606: LD_INT 43
8608: EQUAL
8609: OR
8610: PUSH
8611: LD_OWVAR 40
8615: PUSH
8616: LD_INT 44
8618: EQUAL
8619: OR
8620: PUSH
8621: LD_OWVAR 40
8625: PUSH
8626: LD_INT 45
8628: EQUAL
8629: OR
8630: PUSH
8631: LD_OWVAR 40
8635: PUSH
8636: LD_INT 49
8638: EQUAL
8639: OR
8640: IFFALSE 8689
// begin ruChassisTab = [ 21 , 22 , 23 , 24 ] ;
8642: LD_ADDR_VAR 0 17
8646: PUSH
8647: LD_INT 21
8649: PUSH
8650: LD_INT 22
8652: PUSH
8653: LD_INT 23
8655: PUSH
8656: LD_INT 24
8658: PUSH
8659: EMPTY
8660: LIST
8661: LIST
8662: LIST
8663: LIST
8664: ST_TO_ADDR
// vc_chassis = ruChassisTab [ Rand ( 1 , ruChassisTab ) ] ;
8665: LD_ADDR_OWVAR 37
8669: PUSH
8670: LD_VAR 0 17
8674: PUSH
8675: LD_INT 1
8677: PPUSH
8678: LD_VAR 0 17
8682: PPUSH
8683: CALL_OW 12
8687: ARRAY
8688: ST_TO_ADDR
// end ; if vc_weapon = 46 or vc_weapon = 47 then
8689: LD_OWVAR 40
8693: PUSH
8694: LD_INT 46
8696: EQUAL
8697: PUSH
8698: LD_OWVAR 40
8702: PUSH
8703: LD_INT 47
8705: EQUAL
8706: OR
8707: IFFALSE 8748
// begin ruChassisTab = [ 23 , 24 ] ;
8709: LD_ADDR_VAR 0 17
8713: PUSH
8714: LD_INT 23
8716: PUSH
8717: LD_INT 24
8719: PUSH
8720: EMPTY
8721: LIST
8722: LIST
8723: ST_TO_ADDR
// vc_chassis = ruChassisTab [ Rand ( 1 , ruChassisTab ) ] ;
8724: LD_ADDR_OWVAR 37
8728: PUSH
8729: LD_VAR 0 17
8733: PUSH
8734: LD_INT 1
8736: PPUSH
8737: LD_VAR 0 17
8741: PPUSH
8742: CALL_OW 12
8746: ARRAY
8747: ST_TO_ADDR
// end ; veh = CreateVehicle ;
8748: LD_ADDR_VAR 0 16
8752: PUSH
8753: CALL_OW 45
8757: ST_TO_ADDR
// PlaceUnitArea ( veh , area , false ) ;
8758: LD_VAR 0 16
8762: PPUSH
8763: LD_VAR 0 1
8767: PPUSH
8768: LD_INT 0
8770: PPUSH
8771: CALL_OW 49
// if vc_control = 1 then
8775: LD_OWVAR 38
8779: PUSH
8780: LD_INT 1
8782: EQUAL
8783: IFFALSE 8911
// begin hc_gallery =  ;
8785: LD_ADDR_OWVAR 33
8789: PUSH
8790: LD_STRING 
8792: ST_TO_ADDR
// hc_name =  ;
8793: LD_ADDR_OWVAR 26
8797: PUSH
8798: LD_STRING 
8800: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
8801: LD_ADDR_OWVAR 29
8805: PUSH
8806: LD_INT 9
8808: PPUSH
8809: LD_INT 11
8811: PPUSH
8812: CALL_OW 12
8816: PUSH
8817: LD_INT 10
8819: PPUSH
8820: LD_INT 12
8822: PPUSH
8823: CALL_OW 12
8827: PUSH
8828: EMPTY
8829: LIST
8830: LIST
8831: ST_TO_ADDR
// hc_skills = [ mehskill , mehskill , mehskill , mehskill ] ;
8832: LD_ADDR_OWVAR 31
8836: PUSH
8837: LD_VAR 0 4
8841: PUSH
8842: LD_VAR 0 4
8846: PUSH
8847: LD_VAR 0 4
8851: PUSH
8852: LD_VAR 0 4
8856: PUSH
8857: EMPTY
8858: LIST
8859: LIST
8860: LIST
8861: LIST
8862: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
8863: LD_ADDR_OWVAR 27
8867: PUSH
8868: LD_INT 1
8870: PPUSH
8871: LD_INT 2
8873: PPUSH
8874: CALL_OW 12
8878: ST_TO_ADDR
// hc_class = 3 ;
8879: LD_ADDR_OWVAR 28
8883: PUSH
8884: LD_INT 3
8886: ST_TO_ADDR
// un = CreateHuman ;
8887: LD_ADDR_VAR 0 15
8891: PUSH
8892: CALL_OW 44
8896: ST_TO_ADDR
// PlaceHumanInUnit ( un , veh ) ;
8897: LD_VAR 0 15
8901: PPUSH
8902: LD_VAR 0 16
8906: PPUSH
8907: CALL_OW 52
// end ; i = i + 1 ;
8911: LD_ADDR_VAR 0 13
8915: PUSH
8916: LD_VAR 0 13
8920: PUSH
8921: LD_INT 1
8923: PLUS
8924: ST_TO_ADDR
// end ; until i = vehCount ;
8925: LD_VAR 0 13
8929: PUSH
8930: LD_VAR 0 3
8934: EQUAL
8935: IFFALSE 7570
// repeat wait ( 0 0$1 ) ;
8937: LD_INT 35
8939: PPUSH
8940: CALL_OW 67
// vehicleOK_list = FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_vehicle ] , [ f_lives , 650 ] ] ) ;
8944: LD_ADDR_VAR 0 20
8948: PUSH
8949: LD_INT 22
8951: PUSH
8952: LD_VAR 0 2
8956: PUSH
8957: EMPTY
8958: LIST
8959: LIST
8960: PUSH
8961: LD_INT 21
8963: PUSH
8964: LD_INT 2
8966: PUSH
8967: EMPTY
8968: LIST
8969: LIST
8970: PUSH
8971: LD_INT 24
8973: PUSH
8974: LD_INT 650
8976: PUSH
8977: EMPTY
8978: LIST
8979: LIST
8980: PUSH
8981: EMPTY
8982: LIST
8983: LIST
8984: LIST
8985: PPUSH
8986: CALL_OW 69
8990: ST_TO_ADDR
// if vehicleOK_list > 0 then
8991: LD_VAR 0 20
8995: PUSH
8996: LD_INT 0
8998: GREATER
8999: IFFALSE 9190
// begin for i in vehicleOK_list do
9001: LD_ADDR_VAR 0 13
9005: PUSH
9006: LD_VAR 0 20
9010: PUSH
9011: FOR_IN
9012: IFFALSE 9188
// begin target1 := NearestUnitToUnit ( FilterAllUnits ( [ f_enemy , Side ] ) , i ) ;
9014: LD_ADDR_VAR 0 21
9018: PUSH
9019: LD_INT 81
9021: PUSH
9022: LD_VAR 0 2
9026: PUSH
9027: EMPTY
9028: LIST
9029: LIST
9030: PPUSH
9031: CALL_OW 69
9035: PPUSH
9036: LD_VAR 0 13
9040: PPUSH
9041: CALL_OW 74
9045: ST_TO_ADDR
// target2 := NearestUnitToUnit ( FilterAllUnits ( [ [ [ f_enemy , Side ] , [ f_or , [ f_occupied ] , [ f_type , unit_human ] , [ f_type , unit_vehicle ] ] ] ] ) , i ) ;
9046: LD_ADDR_VAR 0 22
9050: PUSH
9051: LD_INT 81
9053: PUSH
9054: LD_VAR 0 2
9058: PUSH
9059: EMPTY
9060: LIST
9061: LIST
9062: PUSH
9063: LD_INT 2
9065: PUSH
9066: LD_INT 59
9068: PUSH
9069: EMPTY
9070: LIST
9071: PUSH
9072: LD_INT 21
9074: PUSH
9075: LD_INT 1
9077: PUSH
9078: EMPTY
9079: LIST
9080: LIST
9081: PUSH
9082: LD_INT 21
9084: PUSH
9085: LD_INT 2
9087: PUSH
9088: EMPTY
9089: LIST
9090: LIST
9091: PUSH
9092: EMPTY
9093: LIST
9094: LIST
9095: LIST
9096: LIST
9097: PUSH
9098: EMPTY
9099: LIST
9100: LIST
9101: PUSH
9102: EMPTY
9103: LIST
9104: PPUSH
9105: CALL_OW 69
9109: PPUSH
9110: LD_VAR 0 13
9114: PPUSH
9115: CALL_OW 74
9119: ST_TO_ADDR
// if GetDistUnits ( i , target1 ) + 8 < GetDistUnits ( i , target2 ) then
9120: LD_VAR 0 13
9124: PPUSH
9125: LD_VAR 0 21
9129: PPUSH
9130: CALL_OW 296
9134: PUSH
9135: LD_INT 8
9137: PLUS
9138: PUSH
9139: LD_VAR 0 13
9143: PPUSH
9144: LD_VAR 0 22
9148: PPUSH
9149: CALL_OW 296
9153: LESS
9154: IFFALSE 9172
// begin ComAttackUnit ( i , target1 ) ;
9156: LD_VAR 0 13
9160: PPUSH
9161: LD_VAR 0 21
9165: PPUSH
9166: CALL_OW 115
// end else
9170: GO 9186
// begin ComAttackUnit ( i , target2 ) ;
9172: LD_VAR 0 13
9176: PPUSH
9177: LD_VAR 0 22
9181: PPUSH
9182: CALL_OW 115
// end ; end ;
9186: GO 9011
9188: POP
9189: POP
// end ; until ( FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_vehicle ] ] ) ) = 0 ;
9190: LD_INT 22
9192: PUSH
9193: LD_VAR 0 2
9197: PUSH
9198: EMPTY
9199: LIST
9200: LIST
9201: PUSH
9202: LD_INT 21
9204: PUSH
9205: LD_INT 2
9207: PUSH
9208: EMPTY
9209: LIST
9210: LIST
9211: PUSH
9212: EMPTY
9213: LIST
9214: LIST
9215: PPUSH
9216: CALL_OW 69
9220: PUSH
9221: LD_INT 0
9223: EQUAL
9224: IFFALSE 8937
// end ;
9226: LD_VAR 0 12
9230: RET
// export function RespawnAttackInfantry ( side , nation , soldierCount , sniperCount , bazookCount , mortalCount , medicCount , skil , spawnArea , healArea , targetSide ) ; var i , j , un , damageUnit_list , medic_list , soldiersOK_list , enemyUnits , und , target1 , target2 ; begin
9231: LD_INT 0
9233: PPUSH
9234: PPUSH
9235: PPUSH
9236: PPUSH
9237: PPUSH
9238: PPUSH
9239: PPUSH
9240: PPUSH
9241: PPUSH
9242: PPUSH
9243: PPUSH
// for i = 1 to soldierCount do
9244: LD_ADDR_VAR 0 13
9248: PUSH
9249: DOUBLE
9250: LD_INT 1
9252: DEC
9253: ST_TO_ADDR
9254: LD_VAR 0 3
9258: PUSH
9259: FOR_TO
9260: IFFALSE 9397
// begin uc_side = side ;
9262: LD_ADDR_OWVAR 20
9266: PUSH
9267: LD_VAR 0 1
9271: ST_TO_ADDR
// uc_nation = nation ;
9272: LD_ADDR_OWVAR 21
9276: PUSH
9277: LD_VAR 0 2
9281: ST_TO_ADDR
// hc_gallery =  ;
9282: LD_ADDR_OWVAR 33
9286: PUSH
9287: LD_STRING 
9289: ST_TO_ADDR
// hc_name =  ;
9290: LD_ADDR_OWVAR 26
9294: PUSH
9295: LD_STRING 
9297: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
9298: LD_ADDR_OWVAR 29
9302: PUSH
9303: LD_INT 10
9305: PUSH
9306: LD_INT 10
9308: PUSH
9309: EMPTY
9310: LIST
9311: LIST
9312: ST_TO_ADDR
// hc_skills = [ skil , skil , skil , skil ] ;
9313: LD_ADDR_OWVAR 31
9317: PUSH
9318: LD_VAR 0 8
9322: PUSH
9323: LD_VAR 0 8
9327: PUSH
9328: LD_VAR 0 8
9332: PUSH
9333: LD_VAR 0 8
9337: PUSH
9338: EMPTY
9339: LIST
9340: LIST
9341: LIST
9342: LIST
9343: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
9344: LD_ADDR_OWVAR 27
9348: PUSH
9349: LD_INT 1
9351: PPUSH
9352: LD_INT 2
9354: PPUSH
9355: CALL_OW 12
9359: ST_TO_ADDR
// hc_class = 1 ;
9360: LD_ADDR_OWVAR 28
9364: PUSH
9365: LD_INT 1
9367: ST_TO_ADDR
// un = CreateHuman ;
9368: LD_ADDR_VAR 0 15
9372: PUSH
9373: CALL_OW 44
9377: ST_TO_ADDR
// PlaceUnitArea ( un , spawnArea , false ) ;
9378: LD_VAR 0 15
9382: PPUSH
9383: LD_VAR 0 9
9387: PPUSH
9388: LD_INT 0
9390: PPUSH
9391: CALL_OW 49
// end ;
9395: GO 9259
9397: POP
9398: POP
// for i = 1 to sniperCount do
9399: LD_ADDR_VAR 0 13
9403: PUSH
9404: DOUBLE
9405: LD_INT 1
9407: DEC
9408: ST_TO_ADDR
9409: LD_VAR 0 4
9413: PUSH
9414: FOR_TO
9415: IFFALSE 9552
// begin uc_side = side ;
9417: LD_ADDR_OWVAR 20
9421: PUSH
9422: LD_VAR 0 1
9426: ST_TO_ADDR
// uc_nation = nation ;
9427: LD_ADDR_OWVAR 21
9431: PUSH
9432: LD_VAR 0 2
9436: ST_TO_ADDR
// hc_gallery =  ;
9437: LD_ADDR_OWVAR 33
9441: PUSH
9442: LD_STRING 
9444: ST_TO_ADDR
// hc_name =  ;
9445: LD_ADDR_OWVAR 26
9449: PUSH
9450: LD_STRING 
9452: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
9453: LD_ADDR_OWVAR 29
9457: PUSH
9458: LD_INT 10
9460: PUSH
9461: LD_INT 10
9463: PUSH
9464: EMPTY
9465: LIST
9466: LIST
9467: ST_TO_ADDR
// hc_skills = [ skil , skil , skil , skil ] ;
9468: LD_ADDR_OWVAR 31
9472: PUSH
9473: LD_VAR 0 8
9477: PUSH
9478: LD_VAR 0 8
9482: PUSH
9483: LD_VAR 0 8
9487: PUSH
9488: LD_VAR 0 8
9492: PUSH
9493: EMPTY
9494: LIST
9495: LIST
9496: LIST
9497: LIST
9498: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
9499: LD_ADDR_OWVAR 27
9503: PUSH
9504: LD_INT 1
9506: PPUSH
9507: LD_INT 2
9509: PPUSH
9510: CALL_OW 12
9514: ST_TO_ADDR
// hc_class = 5 ;
9515: LD_ADDR_OWVAR 28
9519: PUSH
9520: LD_INT 5
9522: ST_TO_ADDR
// un = CreateHuman ;
9523: LD_ADDR_VAR 0 15
9527: PUSH
9528: CALL_OW 44
9532: ST_TO_ADDR
// PlaceUnitArea ( un , spawnArea , false ) ;
9533: LD_VAR 0 15
9537: PPUSH
9538: LD_VAR 0 9
9542: PPUSH
9543: LD_INT 0
9545: PPUSH
9546: CALL_OW 49
// end ;
9550: GO 9414
9552: POP
9553: POP
// for i = 1 to bazookCount do
9554: LD_ADDR_VAR 0 13
9558: PUSH
9559: DOUBLE
9560: LD_INT 1
9562: DEC
9563: ST_TO_ADDR
9564: LD_VAR 0 5
9568: PUSH
9569: FOR_TO
9570: IFFALSE 9707
// begin uc_side = side ;
9572: LD_ADDR_OWVAR 20
9576: PUSH
9577: LD_VAR 0 1
9581: ST_TO_ADDR
// uc_nation = nation ;
9582: LD_ADDR_OWVAR 21
9586: PUSH
9587: LD_VAR 0 2
9591: ST_TO_ADDR
// hc_gallery =  ;
9592: LD_ADDR_OWVAR 33
9596: PUSH
9597: LD_STRING 
9599: ST_TO_ADDR
// hc_name =  ;
9600: LD_ADDR_OWVAR 26
9604: PUSH
9605: LD_STRING 
9607: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
9608: LD_ADDR_OWVAR 29
9612: PUSH
9613: LD_INT 10
9615: PUSH
9616: LD_INT 10
9618: PUSH
9619: EMPTY
9620: LIST
9621: LIST
9622: ST_TO_ADDR
// hc_skills = [ skil , skil , skil , skil ] ;
9623: LD_ADDR_OWVAR 31
9627: PUSH
9628: LD_VAR 0 8
9632: PUSH
9633: LD_VAR 0 8
9637: PUSH
9638: LD_VAR 0 8
9642: PUSH
9643: LD_VAR 0 8
9647: PUSH
9648: EMPTY
9649: LIST
9650: LIST
9651: LIST
9652: LIST
9653: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
9654: LD_ADDR_OWVAR 27
9658: PUSH
9659: LD_INT 1
9661: PPUSH
9662: LD_INT 2
9664: PPUSH
9665: CALL_OW 12
9669: ST_TO_ADDR
// hc_class = 9 ;
9670: LD_ADDR_OWVAR 28
9674: PUSH
9675: LD_INT 9
9677: ST_TO_ADDR
// un = CreateHuman ;
9678: LD_ADDR_VAR 0 15
9682: PUSH
9683: CALL_OW 44
9687: ST_TO_ADDR
// PlaceUnitArea ( un , spawnArea , false ) ;
9688: LD_VAR 0 15
9692: PPUSH
9693: LD_VAR 0 9
9697: PPUSH
9698: LD_INT 0
9700: PPUSH
9701: CALL_OW 49
// end ;
9705: GO 9569
9707: POP
9708: POP
// for i = 1 to mortalCount do
9709: LD_ADDR_VAR 0 13
9713: PUSH
9714: DOUBLE
9715: LD_INT 1
9717: DEC
9718: ST_TO_ADDR
9719: LD_VAR 0 6
9723: PUSH
9724: FOR_TO
9725: IFFALSE 9862
// begin uc_side = side ;
9727: LD_ADDR_OWVAR 20
9731: PUSH
9732: LD_VAR 0 1
9736: ST_TO_ADDR
// uc_nation = nation ;
9737: LD_ADDR_OWVAR 21
9741: PUSH
9742: LD_VAR 0 2
9746: ST_TO_ADDR
// hc_gallery =  ;
9747: LD_ADDR_OWVAR 33
9751: PUSH
9752: LD_STRING 
9754: ST_TO_ADDR
// hc_name =  ;
9755: LD_ADDR_OWVAR 26
9759: PUSH
9760: LD_STRING 
9762: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
9763: LD_ADDR_OWVAR 29
9767: PUSH
9768: LD_INT 10
9770: PUSH
9771: LD_INT 10
9773: PUSH
9774: EMPTY
9775: LIST
9776: LIST
9777: ST_TO_ADDR
// hc_skills = [ skil , skil , skil , skil ] ;
9778: LD_ADDR_OWVAR 31
9782: PUSH
9783: LD_VAR 0 8
9787: PUSH
9788: LD_VAR 0 8
9792: PUSH
9793: LD_VAR 0 8
9797: PUSH
9798: LD_VAR 0 8
9802: PUSH
9803: EMPTY
9804: LIST
9805: LIST
9806: LIST
9807: LIST
9808: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
9809: LD_ADDR_OWVAR 27
9813: PUSH
9814: LD_INT 1
9816: PPUSH
9817: LD_INT 2
9819: PPUSH
9820: CALL_OW 12
9824: ST_TO_ADDR
// hc_class = 8 ;
9825: LD_ADDR_OWVAR 28
9829: PUSH
9830: LD_INT 8
9832: ST_TO_ADDR
// un = CreateHuman ;
9833: LD_ADDR_VAR 0 15
9837: PUSH
9838: CALL_OW 44
9842: ST_TO_ADDR
// PlaceUnitArea ( un , spawnArea , false ) ;
9843: LD_VAR 0 15
9847: PPUSH
9848: LD_VAR 0 9
9852: PPUSH
9853: LD_INT 0
9855: PPUSH
9856: CALL_OW 49
// end ;
9860: GO 9724
9862: POP
9863: POP
// soldiersOK_list = FilterAllUnits ( [ [ f_side , side ] , [ f_or , [ f_class , 1 ] , [ f_class , 5 ] , [ f_class , 8 ] , [ f_class , 9 ] ] ] ) ;
9864: LD_ADDR_VAR 0 18
9868: PUSH
9869: LD_INT 22
9871: PUSH
9872: LD_VAR 0 1
9876: PUSH
9877: EMPTY
9878: LIST
9879: LIST
9880: PUSH
9881: LD_INT 2
9883: PUSH
9884: LD_INT 25
9886: PUSH
9887: LD_INT 1
9889: PUSH
9890: EMPTY
9891: LIST
9892: LIST
9893: PUSH
9894: LD_INT 25
9896: PUSH
9897: LD_INT 5
9899: PUSH
9900: EMPTY
9901: LIST
9902: LIST
9903: PUSH
9904: LD_INT 25
9906: PUSH
9907: LD_INT 8
9909: PUSH
9910: EMPTY
9911: LIST
9912: LIST
9913: PUSH
9914: LD_INT 25
9916: PUSH
9917: LD_INT 9
9919: PUSH
9920: EMPTY
9921: LIST
9922: LIST
9923: PUSH
9924: EMPTY
9925: LIST
9926: LIST
9927: LIST
9928: LIST
9929: LIST
9930: PUSH
9931: EMPTY
9932: LIST
9933: LIST
9934: PPUSH
9935: CALL_OW 69
9939: ST_TO_ADDR
// medic_list = FilterAllUnits ( [ [ f_side , side ] , [ f_class , 4 ] ] ) ;
9940: LD_ADDR_VAR 0 17
9944: PUSH
9945: LD_INT 22
9947: PUSH
9948: LD_VAR 0 1
9952: PUSH
9953: EMPTY
9954: LIST
9955: LIST
9956: PUSH
9957: LD_INT 25
9959: PUSH
9960: LD_INT 4
9962: PUSH
9963: EMPTY
9964: LIST
9965: LIST
9966: PUSH
9967: EMPTY
9968: LIST
9969: LIST
9970: PPUSH
9971: CALL_OW 69
9975: ST_TO_ADDR
// for i in medic_list do
9976: LD_ADDR_VAR 0 13
9980: PUSH
9981: LD_VAR 0 17
9985: PUSH
9986: FOR_IN
9987: IFFALSE 10005
// ComMoveToArea ( i , healArea ) ;
9989: LD_VAR 0 13
9993: PPUSH
9994: LD_VAR 0 10
9998: PPUSH
9999: CALL_OW 113
10003: GO 9986
10005: POP
10006: POP
// repeat wait ( 0 0$1 ) ;
10007: LD_INT 35
10009: PPUSH
10010: CALL_OW 67
// damageUnit_list = FilterAllUnits ( [ [ f_side , side ] , [ f_and , [ f_not , [ f_lives , 550 ] ] , [ f_lives , 250 ] ] ] ) ;
10014: LD_ADDR_VAR 0 16
10018: PUSH
10019: LD_INT 22
10021: PUSH
10022: LD_VAR 0 1
10026: PUSH
10027: EMPTY
10028: LIST
10029: LIST
10030: PUSH
10031: LD_INT 1
10033: PUSH
10034: LD_INT 3
10036: PUSH
10037: LD_INT 24
10039: PUSH
10040: LD_INT 550
10042: PUSH
10043: EMPTY
10044: LIST
10045: LIST
10046: PUSH
10047: EMPTY
10048: LIST
10049: LIST
10050: PUSH
10051: LD_INT 24
10053: PUSH
10054: LD_INT 250
10056: PUSH
10057: EMPTY
10058: LIST
10059: LIST
10060: PUSH
10061: EMPTY
10062: LIST
10063: LIST
10064: LIST
10065: PUSH
10066: EMPTY
10067: LIST
10068: LIST
10069: PPUSH
10070: CALL_OW 69
10074: ST_TO_ADDR
// soldiersOK_list = FilterAllUnits ( [ [ f_side , side ] , [ f_or , [ f_class , 1 ] , [ f_class , 5 ] , [ f_class , 8 ] , [ f_class , 9 ] ] , [ f_lives , 1000 ] ] ) ;
10075: LD_ADDR_VAR 0 18
10079: PUSH
10080: LD_INT 22
10082: PUSH
10083: LD_VAR 0 1
10087: PUSH
10088: EMPTY
10089: LIST
10090: LIST
10091: PUSH
10092: LD_INT 2
10094: PUSH
10095: LD_INT 25
10097: PUSH
10098: LD_INT 1
10100: PUSH
10101: EMPTY
10102: LIST
10103: LIST
10104: PUSH
10105: LD_INT 25
10107: PUSH
10108: LD_INT 5
10110: PUSH
10111: EMPTY
10112: LIST
10113: LIST
10114: PUSH
10115: LD_INT 25
10117: PUSH
10118: LD_INT 8
10120: PUSH
10121: EMPTY
10122: LIST
10123: LIST
10124: PUSH
10125: LD_INT 25
10127: PUSH
10128: LD_INT 9
10130: PUSH
10131: EMPTY
10132: LIST
10133: LIST
10134: PUSH
10135: EMPTY
10136: LIST
10137: LIST
10138: LIST
10139: LIST
10140: LIST
10141: PUSH
10142: LD_INT 24
10144: PUSH
10145: LD_INT 1000
10147: PUSH
10148: EMPTY
10149: LIST
10150: LIST
10151: PUSH
10152: EMPTY
10153: LIST
10154: LIST
10155: LIST
10156: PPUSH
10157: CALL_OW 69
10161: ST_TO_ADDR
// for i in soldiersOK_list do
10162: LD_ADDR_VAR 0 13
10166: PUSH
10167: LD_VAR 0 18
10171: PUSH
10172: FOR_IN
10173: IFFALSE 10349
// begin target1 := NearestUnitToUnit ( FilterAllUnits ( [ f_enemy , Side ] ) , i ) ;
10175: LD_ADDR_VAR 0 21
10179: PUSH
10180: LD_INT 81
10182: PUSH
10183: LD_VAR 0 1
10187: PUSH
10188: EMPTY
10189: LIST
10190: LIST
10191: PPUSH
10192: CALL_OW 69
10196: PPUSH
10197: LD_VAR 0 13
10201: PPUSH
10202: CALL_OW 74
10206: ST_TO_ADDR
// target2 := NearestUnitToUnit ( FilterAllUnits ( [ [ [ f_enemy , Side ] , [ f_or , [ f_occupied ] , [ f_type , unit_human ] , [ f_type , unit_vehicle ] ] ] ] ) , i ) ;
10207: LD_ADDR_VAR 0 22
10211: PUSH
10212: LD_INT 81
10214: PUSH
10215: LD_VAR 0 1
10219: PUSH
10220: EMPTY
10221: LIST
10222: LIST
10223: PUSH
10224: LD_INT 2
10226: PUSH
10227: LD_INT 59
10229: PUSH
10230: EMPTY
10231: LIST
10232: PUSH
10233: LD_INT 21
10235: PUSH
10236: LD_INT 1
10238: PUSH
10239: EMPTY
10240: LIST
10241: LIST
10242: PUSH
10243: LD_INT 21
10245: PUSH
10246: LD_INT 2
10248: PUSH
10249: EMPTY
10250: LIST
10251: LIST
10252: PUSH
10253: EMPTY
10254: LIST
10255: LIST
10256: LIST
10257: LIST
10258: PUSH
10259: EMPTY
10260: LIST
10261: LIST
10262: PUSH
10263: EMPTY
10264: LIST
10265: PPUSH
10266: CALL_OW 69
10270: PPUSH
10271: LD_VAR 0 13
10275: PPUSH
10276: CALL_OW 74
10280: ST_TO_ADDR
// if GetDistUnits ( i , target1 ) + 8 < GetDistUnits ( i , target2 ) then
10281: LD_VAR 0 13
10285: PPUSH
10286: LD_VAR 0 21
10290: PPUSH
10291: CALL_OW 296
10295: PUSH
10296: LD_INT 8
10298: PLUS
10299: PUSH
10300: LD_VAR 0 13
10304: PPUSH
10305: LD_VAR 0 22
10309: PPUSH
10310: CALL_OW 296
10314: LESS
10315: IFFALSE 10333
// begin ComAttackUnit ( i , target1 ) ;
10317: LD_VAR 0 13
10321: PPUSH
10322: LD_VAR 0 21
10326: PPUSH
10327: CALL_OW 115
// end else
10331: GO 10347
// begin ComAttackUnit ( i , target2 ) ;
10333: LD_VAR 0 13
10337: PPUSH
10338: LD_VAR 0 22
10342: PPUSH
10343: CALL_OW 115
// end ; end ;
10347: GO 10172
10349: POP
10350: POP
// until soldiersOK_list = [ ] ;
10351: LD_VAR 0 18
10355: PUSH
10356: EMPTY
10357: EQUAL
10358: IFFALSE 10007
// end ; end_of_file
10360: LD_VAR 0 12
10364: RET
// on BuildingStarted ( b , u ) do begin if GetBType ( b ) in [ b_depot , b_warehouse ] then
10365: LD_VAR 0 1
10369: PPUSH
10370: CALL_OW 266
10374: PUSH
10375: LD_INT 0
10377: PUSH
10378: LD_INT 1
10380: PUSH
10381: EMPTY
10382: LIST
10383: LIST
10384: IN
10385: IFFALSE 10410
// SetBName ( b , @ & GetSide ( b ) ) ;
10387: LD_VAR 0 1
10391: PPUSH
10392: LD_STRING @
10394: PUSH
10395: LD_VAR 0 1
10399: PPUSH
10400: CALL_OW 255
10404: STR
10405: PPUSH
10406: CALL_OW 500
// end ;
10410: PPOPN 2
10412: END
// on BuildingCaptured ( b , o , e ) do begin if GetBType ( b ) in [ b_depot , b_warehouse ] then
10413: LD_VAR 0 1
10417: PPUSH
10418: CALL_OW 266
10422: PUSH
10423: LD_INT 0
10425: PUSH
10426: LD_INT 1
10428: PUSH
10429: EMPTY
10430: LIST
10431: LIST
10432: IN
10433: IFFALSE 10458
// SetBName ( b , @ & GetSide ( b ) ) ;
10435: LD_VAR 0 1
10439: PPUSH
10440: LD_STRING @
10442: PUSH
10443: LD_VAR 0 1
10447: PPUSH
10448: CALL_OW 255
10452: STR
10453: PPUSH
10454: CALL_OW 500
// end ;
10458: PPOPN 3
10460: END
// on UnitDestroyed ( unit ) do begin if GetSide ( unit ) = randomedColors [ 1 ] and GetType ( unit ) = unit_building and GetDistUnitArea ( unit , AlphaBaseArea ) = 0 then
10461: LD_VAR 0 1
10465: PPUSH
10466: CALL_OW 255
10470: PUSH
10471: LD_EXP 41
10475: PUSH
10476: LD_INT 1
10478: ARRAY
10479: EQUAL
10480: PUSH
10481: LD_VAR 0 1
10485: PPUSH
10486: CALL_OW 247
10490: PUSH
10491: LD_INT 3
10493: EQUAL
10494: AND
10495: PUSH
10496: LD_VAR 0 1
10500: PPUSH
10501: LD_INT 6
10503: PPUSH
10504: CALL_OW 299
10508: PUSH
10509: LD_INT 0
10511: EQUAL
10512: AND
10513: IFFALSE 11205
// begin if GetBType ( unit ) = 31 or GetBType ( unit ) = 32 or GetBType ( unit ) = 36 or GetBType ( unit ) = 0 or GetBType ( unit ) = 24 or GetBType ( unit ) = 17 or GetBType ( unit ) = 25 or GetBType ( unit ) = 19 or GetBType ( unit ) = 20 or GetBType ( unit ) = 18 or GetBType ( unit ) = 21 or GetBType ( unit ) = 23 or GetBType ( unit ) = 16 or GetBType ( unit ) = 6 or GetBType ( unit ) = 29 or GetBType ( unit ) = 26 or GetBType ( unit ) = 30 or GetBType ( unit ) = 28 or GetBType ( unit ) = 27 or GetBType ( unit ) = 33 or GetBType ( unit ) = 2 or GetBType ( unit ) = 4 then
10515: LD_VAR 0 1
10519: PPUSH
10520: CALL_OW 266
10524: PUSH
10525: LD_INT 31
10527: EQUAL
10528: PUSH
10529: LD_VAR 0 1
10533: PPUSH
10534: CALL_OW 266
10538: PUSH
10539: LD_INT 32
10541: EQUAL
10542: OR
10543: PUSH
10544: LD_VAR 0 1
10548: PPUSH
10549: CALL_OW 266
10553: PUSH
10554: LD_INT 36
10556: EQUAL
10557: OR
10558: PUSH
10559: LD_VAR 0 1
10563: PPUSH
10564: CALL_OW 266
10568: PUSH
10569: LD_INT 0
10571: EQUAL
10572: OR
10573: PUSH
10574: LD_VAR 0 1
10578: PPUSH
10579: CALL_OW 266
10583: PUSH
10584: LD_INT 24
10586: EQUAL
10587: OR
10588: PUSH
10589: LD_VAR 0 1
10593: PPUSH
10594: CALL_OW 266
10598: PUSH
10599: LD_INT 17
10601: EQUAL
10602: OR
10603: PUSH
10604: LD_VAR 0 1
10608: PPUSH
10609: CALL_OW 266
10613: PUSH
10614: LD_INT 25
10616: EQUAL
10617: OR
10618: PUSH
10619: LD_VAR 0 1
10623: PPUSH
10624: CALL_OW 266
10628: PUSH
10629: LD_INT 19
10631: EQUAL
10632: OR
10633: PUSH
10634: LD_VAR 0 1
10638: PPUSH
10639: CALL_OW 266
10643: PUSH
10644: LD_INT 20
10646: EQUAL
10647: OR
10648: PUSH
10649: LD_VAR 0 1
10653: PPUSH
10654: CALL_OW 266
10658: PUSH
10659: LD_INT 18
10661: EQUAL
10662: OR
10663: PUSH
10664: LD_VAR 0 1
10668: PPUSH
10669: CALL_OW 266
10673: PUSH
10674: LD_INT 21
10676: EQUAL
10677: OR
10678: PUSH
10679: LD_VAR 0 1
10683: PPUSH
10684: CALL_OW 266
10688: PUSH
10689: LD_INT 23
10691: EQUAL
10692: OR
10693: PUSH
10694: LD_VAR 0 1
10698: PPUSH
10699: CALL_OW 266
10703: PUSH
10704: LD_INT 16
10706: EQUAL
10707: OR
10708: PUSH
10709: LD_VAR 0 1
10713: PPUSH
10714: CALL_OW 266
10718: PUSH
10719: LD_INT 6
10721: EQUAL
10722: OR
10723: PUSH
10724: LD_VAR 0 1
10728: PPUSH
10729: CALL_OW 266
10733: PUSH
10734: LD_INT 29
10736: EQUAL
10737: OR
10738: PUSH
10739: LD_VAR 0 1
10743: PPUSH
10744: CALL_OW 266
10748: PUSH
10749: LD_INT 26
10751: EQUAL
10752: OR
10753: PUSH
10754: LD_VAR 0 1
10758: PPUSH
10759: CALL_OW 266
10763: PUSH
10764: LD_INT 30
10766: EQUAL
10767: OR
10768: PUSH
10769: LD_VAR 0 1
10773: PPUSH
10774: CALL_OW 266
10778: PUSH
10779: LD_INT 28
10781: EQUAL
10782: OR
10783: PUSH
10784: LD_VAR 0 1
10788: PPUSH
10789: CALL_OW 266
10793: PUSH
10794: LD_INT 27
10796: EQUAL
10797: OR
10798: PUSH
10799: LD_VAR 0 1
10803: PPUSH
10804: CALL_OW 266
10808: PUSH
10809: LD_INT 33
10811: EQUAL
10812: OR
10813: PUSH
10814: LD_VAR 0 1
10818: PPUSH
10819: CALL_OW 266
10823: PUSH
10824: LD_INT 2
10826: EQUAL
10827: OR
10828: PUSH
10829: LD_VAR 0 1
10833: PPUSH
10834: CALL_OW 266
10838: PUSH
10839: LD_INT 4
10841: EQUAL
10842: OR
10843: IFFALSE 10929
// begin amDestroyedBuildings = amDestroyedBuildings ^ GetBType ( unit ) ;
10845: LD_ADDR_EXP 39
10849: PUSH
10850: LD_EXP 39
10854: PUSH
10855: LD_VAR 0 1
10859: PPUSH
10860: CALL_OW 266
10864: ADD
10865: ST_TO_ADDR
// amDestroyedBuildings = amDestroyedBuildings ^ GetX ( unit ) ;
10866: LD_ADDR_EXP 39
10870: PUSH
10871: LD_EXP 39
10875: PUSH
10876: LD_VAR 0 1
10880: PPUSH
10881: CALL_OW 250
10885: ADD
10886: ST_TO_ADDR
// amDestroyedBuildings = amDestroyedBuildings ^ GetY ( unit ) ;
10887: LD_ADDR_EXP 39
10891: PUSH
10892: LD_EXP 39
10896: PUSH
10897: LD_VAR 0 1
10901: PPUSH
10902: CALL_OW 251
10906: ADD
10907: ST_TO_ADDR
// amDestroyedBuildings = amDestroyedBuildings ^ GetDir ( unit ) ;
10908: LD_ADDR_EXP 39
10912: PUSH
10913: LD_EXP 39
10917: PUSH
10918: LD_VAR 0 1
10922: PPUSH
10923: CALL_OW 254
10927: ADD
10928: ST_TO_ADDR
// end ; if GetBType ( unit ) = 1 then
10929: LD_VAR 0 1
10933: PPUSH
10934: CALL_OW 266
10938: PUSH
10939: LD_INT 1
10941: EQUAL
10942: IFFALSE 11021
// begin amDestroyedBuildings = amDestroyedBuildings ^ 0 ;
10944: LD_ADDR_EXP 39
10948: PUSH
10949: LD_EXP 39
10953: PUSH
10954: LD_INT 0
10956: ADD
10957: ST_TO_ADDR
// amDestroyedBuildings = amDestroyedBuildings ^ GetX ( unit ) ;
10958: LD_ADDR_EXP 39
10962: PUSH
10963: LD_EXP 39
10967: PUSH
10968: LD_VAR 0 1
10972: PPUSH
10973: CALL_OW 250
10977: ADD
10978: ST_TO_ADDR
// amDestroyedBuildings = amDestroyedBuildings ^ GetY ( unit ) ;
10979: LD_ADDR_EXP 39
10983: PUSH
10984: LD_EXP 39
10988: PUSH
10989: LD_VAR 0 1
10993: PPUSH
10994: CALL_OW 251
10998: ADD
10999: ST_TO_ADDR
// amDestroyedBuildings = amDestroyedBuildings ^ GetDir ( unit ) ;
11000: LD_ADDR_EXP 39
11004: PUSH
11005: LD_EXP 39
11009: PUSH
11010: LD_VAR 0 1
11014: PPUSH
11015: CALL_OW 254
11019: ADD
11020: ST_TO_ADDR
// end ; if GetBType ( unit ) = 3 then
11021: LD_VAR 0 1
11025: PPUSH
11026: CALL_OW 266
11030: PUSH
11031: LD_INT 3
11033: EQUAL
11034: IFFALSE 11113
// begin amDestroyedBuildings = amDestroyedBuildings ^ 2 ;
11036: LD_ADDR_EXP 39
11040: PUSH
11041: LD_EXP 39
11045: PUSH
11046: LD_INT 2
11048: ADD
11049: ST_TO_ADDR
// amDestroyedBuildings = amDestroyedBuildings ^ GetX ( unit ) ;
11050: LD_ADDR_EXP 39
11054: PUSH
11055: LD_EXP 39
11059: PUSH
11060: LD_VAR 0 1
11064: PPUSH
11065: CALL_OW 250
11069: ADD
11070: ST_TO_ADDR
// amDestroyedBuildings = amDestroyedBuildings ^ GetY ( unit ) ;
11071: LD_ADDR_EXP 39
11075: PUSH
11076: LD_EXP 39
11080: PUSH
11081: LD_VAR 0 1
11085: PPUSH
11086: CALL_OW 251
11090: ADD
11091: ST_TO_ADDR
// amDestroyedBuildings = amDestroyedBuildings ^ GetDir ( unit ) ;
11092: LD_ADDR_EXP 39
11096: PUSH
11097: LD_EXP 39
11101: PUSH
11102: LD_VAR 0 1
11106: PPUSH
11107: CALL_OW 254
11111: ADD
11112: ST_TO_ADDR
// end ; if GetBType ( unit ) = 5 then
11113: LD_VAR 0 1
11117: PPUSH
11118: CALL_OW 266
11122: PUSH
11123: LD_INT 5
11125: EQUAL
11126: IFFALSE 11205
// begin amDestroyedBuildings = amDestroyedBuildings ^ 4 ;
11128: LD_ADDR_EXP 39
11132: PUSH
11133: LD_EXP 39
11137: PUSH
11138: LD_INT 4
11140: ADD
11141: ST_TO_ADDR
// amDestroyedBuildings = amDestroyedBuildings ^ GetX ( unit ) ;
11142: LD_ADDR_EXP 39
11146: PUSH
11147: LD_EXP 39
11151: PUSH
11152: LD_VAR 0 1
11156: PPUSH
11157: CALL_OW 250
11161: ADD
11162: ST_TO_ADDR
// amDestroyedBuildings = amDestroyedBuildings ^ GetY ( unit ) ;
11163: LD_ADDR_EXP 39
11167: PUSH
11168: LD_EXP 39
11172: PUSH
11173: LD_VAR 0 1
11177: PPUSH
11178: CALL_OW 251
11182: ADD
11183: ST_TO_ADDR
// amDestroyedBuildings = amDestroyedBuildings ^ GetDir ( unit ) ;
11184: LD_ADDR_EXP 39
11188: PUSH
11189: LD_EXP 39
11193: PUSH
11194: LD_VAR 0 1
11198: PPUSH
11199: CALL_OW 254
11203: ADD
11204: ST_TO_ADDR
// end ; end ; end ;
11205: PPOPN 1
11207: END
// on BuildingComplete ( building ) do var i ;
11208: LD_INT 0
11210: PPUSH
// begin if GetSide ( building ) = randomedColors [ 1 ] then
11211: LD_VAR 0 1
11215: PPUSH
11216: CALL_OW 255
11220: PUSH
11221: LD_EXP 41
11225: PUSH
11226: LD_INT 1
11228: ARRAY
11229: EQUAL
11230: IFFALSE 11476
// begin if GetBType ( building ) = 0 or GetBType ( building ) = 2 or GetBType ( building ) = 4 then
11232: LD_VAR 0 1
11236: PPUSH
11237: CALL_OW 266
11241: PUSH
11242: LD_INT 0
11244: EQUAL
11245: PUSH
11246: LD_VAR 0 1
11250: PPUSH
11251: CALL_OW 266
11255: PUSH
11256: LD_INT 2
11258: EQUAL
11259: OR
11260: PUSH
11261: LD_VAR 0 1
11265: PPUSH
11266: CALL_OW 266
11270: PUSH
11271: LD_INT 4
11273: EQUAL
11274: OR
11275: IFFALSE 11286
// ComUpgrade ( building ) ;
11277: LD_VAR 0 1
11281: PPUSH
11282: CALL_OW 146
// if amDestroyedBuildings > 0 then
11286: LD_EXP 39
11290: PUSH
11291: LD_INT 0
11293: GREATER
11294: IFFALSE 11368
// begin amDestroyedBuildings := Delete ( amDestroyedBuildings , 1 ) ;
11296: LD_ADDR_EXP 39
11300: PUSH
11301: LD_EXP 39
11305: PPUSH
11306: LD_INT 1
11308: PPUSH
11309: CALL_OW 3
11313: ST_TO_ADDR
// amDestroyedBuildings := Delete ( amDestroyedBuildings , 1 ) ;
11314: LD_ADDR_EXP 39
11318: PUSH
11319: LD_EXP 39
11323: PPUSH
11324: LD_INT 1
11326: PPUSH
11327: CALL_OW 3
11331: ST_TO_ADDR
// amDestroyedBuildings := Delete ( amDestroyedBuildings , 1 ) ;
11332: LD_ADDR_EXP 39
11336: PUSH
11337: LD_EXP 39
11341: PPUSH
11342: LD_INT 1
11344: PPUSH
11345: CALL_OW 3
11349: ST_TO_ADDR
// amDestroyedBuildings := Delete ( amDestroyedBuildings , 1 ) ;
11350: LD_ADDR_EXP 39
11354: PUSH
11355: LD_EXP 39
11359: PPUSH
11360: LD_INT 1
11362: PPUSH
11363: CALL_OW 3
11367: ST_TO_ADDR
// end ; if GetBType ( building ) = b_bunker then
11368: LD_VAR 0 1
11372: PPUSH
11373: CALL_OW 266
11377: PUSH
11378: LD_INT 32
11380: EQUAL
11381: IFFALSE 11422
// AddComPlaceWeapon ( building , [ 9 , 10 , 6 , 7 ] [ Rand ( 1 , 4 ) ] ) ;
11383: LD_VAR 0 1
11387: PPUSH
11388: LD_INT 9
11390: PUSH
11391: LD_INT 10
11393: PUSH
11394: LD_INT 6
11396: PUSH
11397: LD_INT 7
11399: PUSH
11400: EMPTY
11401: LIST
11402: LIST
11403: LIST
11404: LIST
11405: PUSH
11406: LD_INT 1
11408: PPUSH
11409: LD_INT 4
11411: PPUSH
11412: CALL_OW 12
11416: ARRAY
11417: PPUSH
11418: CALL_OW 208
// if GetBType ( building ) = b_turret then
11422: LD_VAR 0 1
11426: PPUSH
11427: CALL_OW 266
11431: PUSH
11432: LD_INT 33
11434: EQUAL
11435: IFFALSE 11476
// AddComPlaceWeapon ( building , [ 9 , 10 , 6 , 7 ] [ Rand ( 1 , 4 ) ] ) ;
11437: LD_VAR 0 1
11441: PPUSH
11442: LD_INT 9
11444: PUSH
11445: LD_INT 10
11447: PUSH
11448: LD_INT 6
11450: PUSH
11451: LD_INT 7
11453: PUSH
11454: EMPTY
11455: LIST
11456: LIST
11457: LIST
11458: LIST
11459: PUSH
11460: LD_INT 1
11462: PPUSH
11463: LD_INT 4
11465: PPUSH
11466: CALL_OW 12
11470: ARRAY
11471: PPUSH
11472: CALL_OW 208
// end ; end ; end_of_file
11476: PPOPN 2
11478: END
// export ExtraStrings ; export function ShowTimer ; var AllStrings ; begin
11479: LD_INT 0
11481: PPUSH
11482: PPUSH
// AllStrings := [ #Multi1x1-Time , tick ] ;
11483: LD_ADDR_VAR 0 2
11487: PUSH
11488: LD_STRING #Multi1x1-Time
11490: PUSH
11491: LD_OWVAR 1
11495: PUSH
11496: EMPTY
11497: LIST
11498: LIST
11499: ST_TO_ADDR
// Display_Strings := AllStrings ;
11500: LD_ADDR_OWVAR 47
11504: PUSH
11505: LD_VAR 0 2
11509: ST_TO_ADDR
// end ;
11510: LD_VAR 0 1
11514: RET
// every 0 0$1 do
11515: GO 11517
11517: DISABLE
// begin ShowTimer ;
11518: CALL 11479 0 0
// enable ;
11522: ENABLE
// end ; end_of_file
11523: END
// every 0 0$10 trigger FilterAllUnits ( [ [ f_side , randomedColors [ 1 ] ] ] ) = 0 do
11524: LD_INT 22
11526: PUSH
11527: LD_EXP 41
11531: PUSH
11532: LD_INT 1
11534: ARRAY
11535: PUSH
11536: EMPTY
11537: LIST
11538: LIST
11539: PUSH
11540: EMPTY
11541: LIST
11542: PPUSH
11543: CALL_OW 69
11547: PUSH
11548: LD_INT 0
11550: EQUAL
11551: IFFALSE 11560
11553: GO 11555
11555: DISABLE
// YouWinInMultiplayer ; end_of_file
11556: CALL_OW 106
11560: END
// every 0 0$1 do
11561: GO 11563
11563: DISABLE
// begin ResAllTechs ( randomedColors [ 1 ] , amlab1 , 1 ) ;
11564: LD_EXP 41
11568: PUSH
11569: LD_INT 1
11571: ARRAY
11572: PPUSH
11573: LD_INT 47
11575: PPUSH
11576: LD_INT 1
11578: PPUSH
11579: CALL 5348 0 3
// ResAllTechs ( randomedColors [ 1 ] , amlab2 , 1 ) ;
11583: LD_EXP 41
11587: PUSH
11588: LD_INT 1
11590: ARRAY
11591: PPUSH
11592: LD_INT 317
11594: PPUSH
11595: LD_INT 1
11597: PPUSH
11598: CALL 5348 0 3
// ResAllTechs ( randomedColors [ 1 ] , amlab3 , 1 ) ;
11602: LD_EXP 41
11606: PUSH
11607: LD_INT 1
11609: ARRAY
11610: PPUSH
11611: LD_INT 25
11613: PPUSH
11614: LD_INT 1
11616: PPUSH
11617: CALL 5348 0 3
// end ;
11621: END
// every 0 0$3 trigger FilterAllUnits ( [ f_side , randomedColors [ 1 ] ] ) > 0 do
11622: LD_INT 22
11624: PUSH
11625: LD_EXP 41
11629: PUSH
11630: LD_INT 1
11632: ARRAY
11633: PUSH
11634: EMPTY
11635: LIST
11636: LIST
11637: PPUSH
11638: CALL_OW 69
11642: PUSH
11643: LD_INT 0
11645: GREATER
11646: IFFALSE 11800
11648: GO 11650
11650: DISABLE
// begin if AIDepotDest = 0 then
11651: LD_EXP 40
11655: PUSH
11656: LD_INT 0
11658: EQUAL
11659: IFFALSE 11677
// EnterBunkerOrBarrack ( randomedColors [ 1 ] , AlphaBaseArea ) ;
11661: LD_EXP 41
11665: PUSH
11666: LD_INT 1
11668: ARRAY
11669: PPUSH
11670: LD_INT 6
11672: PPUSH
11673: CALL 5789 0 2
// if AIDepotDest = 0 then
11677: LD_EXP 40
11681: PUSH
11682: LD_INT 0
11684: EQUAL
11685: IFFALSE 11703
// EnterBunkerOrBarrack ( randomedColors [ 1 ] , EastBaseArea ) ;
11687: LD_EXP 41
11691: PUSH
11692: LD_INT 1
11694: ARRAY
11695: PPUSH
11696: LD_INT 8
11698: PPUSH
11699: CALL 5789 0 2
// RepairAndRebuildBase ( randomedColors [ 1 ] , amdepot1 , AlphaBaseArea , amdestroyedBuildings ) ;
11703: LD_EXP 41
11707: PUSH
11708: LD_INT 1
11710: ARRAY
11711: PPUSH
11712: LD_INT 5
11714: PPUSH
11715: LD_INT 6
11717: PPUSH
11718: LD_EXP 39
11722: PPUSH
11723: CALL 6202 0 4
// RepairAndRebuildBase ( randomedColors [ 1 ] , amdepot2 , EastBaseArea , amdestroyedBuildings ) ;
11727: LD_EXP 41
11731: PUSH
11732: LD_INT 1
11734: ARRAY
11735: PPUSH
11736: LD_INT 16
11738: PPUSH
11739: LD_INT 8
11741: PPUSH
11742: LD_EXP 39
11746: PPUSH
11747: CALL 6202 0 4
// HealUnitInBase ( randomedColors [ 1 ] , AlphaBaseHealArea , AlphaBaseArea , [ amlab1 , amlab2 ] ) ;
11751: LD_EXP 41
11755: PUSH
11756: LD_INT 1
11758: ARRAY
11759: PPUSH
11760: LD_INT 7
11762: PPUSH
11763: LD_INT 6
11765: PPUSH
11766: LD_INT 47
11768: PUSH
11769: LD_INT 317
11771: PUSH
11772: EMPTY
11773: LIST
11774: LIST
11775: PPUSH
11776: CALL 6593 0 4
// LinkRemoteVehicle ( randomedColors [ 1 ] , AlphaBaseArea , amcontrol1 ) ;
11780: LD_EXP 41
11784: PUSH
11785: LD_INT 1
11787: ARRAY
11788: PPUSH
11789: LD_INT 6
11791: PPUSH
11792: LD_INT 14
11794: PPUSH
11795: CALL 5433 0 3
// enable ;
11799: ENABLE
// end ;
11800: END
// every 0 0$1 trigger IsDying ( amdepot1 ) or not GetSide ( amdepot1 ) = randomedColors [ 1 ] do
11801: LD_INT 5
11803: PPUSH
11804: CALL_OW 303
11808: PUSH
11809: LD_INT 5
11811: PPUSH
11812: CALL_OW 255
11816: PUSH
11817: LD_EXP 41
11821: PUSH
11822: LD_INT 1
11824: ARRAY
11825: EQUAL
11826: NOT
11827: OR
11828: IFFALSE 11849
11830: GO 11832
11832: DISABLE
// DefendDepot ( randomedColors [ 1 ] , amdepot1 ) ;
11833: LD_EXP 41
11837: PUSH
11838: LD_INT 1
11840: ARRAY
11841: PPUSH
11842: LD_INT 5
11844: PPUSH
11845: CALL 5617 0 2
11849: END
// every 7 7$0 + 5 5$0 do
11850: GO 11852
11852: DISABLE
// begin AddComConstruct ( amfab1 , 5 , 3 , 2 , [ 9 , 10 , 6 ] [ Rand ( 1 , 3 ) ] ) ;
11853: LD_INT 6
11855: PPUSH
11856: LD_INT 5
11858: PPUSH
11859: LD_INT 3
11861: PPUSH
11862: LD_INT 2
11864: PPUSH
11865: LD_INT 9
11867: PUSH
11868: LD_INT 10
11870: PUSH
11871: LD_INT 6
11873: PUSH
11874: EMPTY
11875: LIST
11876: LIST
11877: LIST
11878: PUSH
11879: LD_INT 1
11881: PPUSH
11882: LD_INT 3
11884: PPUSH
11885: CALL_OW 12
11889: ARRAY
11890: PPUSH
11891: CALL_OW 185
// AddComConstruct ( amfab1 , 5 , 3 , 2 , [ 9 , 10 , 6 ] [ Rand ( 1 , 3 ) ] ) ;
11895: LD_INT 6
11897: PPUSH
11898: LD_INT 5
11900: PPUSH
11901: LD_INT 3
11903: PPUSH
11904: LD_INT 2
11906: PPUSH
11907: LD_INT 9
11909: PUSH
11910: LD_INT 10
11912: PUSH
11913: LD_INT 6
11915: PUSH
11916: EMPTY
11917: LIST
11918: LIST
11919: LIST
11920: PUSH
11921: LD_INT 1
11923: PPUSH
11924: LD_INT 3
11926: PPUSH
11927: CALL_OW 12
11931: ARRAY
11932: PPUSH
11933: CALL_OW 185
// AddComConstruct ( amfab1 , 5 , 3 , 2 , [ 9 , 10 , 6 ] [ Rand ( 1 , 3 ) ] ) ;
11937: LD_INT 6
11939: PPUSH
11940: LD_INT 5
11942: PPUSH
11943: LD_INT 3
11945: PPUSH
11946: LD_INT 2
11948: PPUSH
11949: LD_INT 9
11951: PUSH
11952: LD_INT 10
11954: PUSH
11955: LD_INT 6
11957: PUSH
11958: EMPTY
11959: LIST
11960: LIST
11961: LIST
11962: PUSH
11963: LD_INT 1
11965: PPUSH
11966: LD_INT 3
11968: PPUSH
11969: CALL_OW 12
11973: ARRAY
11974: PPUSH
11975: CALL_OW 185
// AddComConstruct ( amfab2 , 5 , 3 , 2 , [ 7 , 5 ] [ Rand ( 1 , 2 ) ] ) ;
11979: LD_INT 51
11981: PPUSH
11982: LD_INT 5
11984: PPUSH
11985: LD_INT 3
11987: PPUSH
11988: LD_INT 2
11990: PPUSH
11991: LD_INT 7
11993: PUSH
11994: LD_INT 5
11996: PUSH
11997: EMPTY
11998: LIST
11999: LIST
12000: PUSH
12001: LD_INT 1
12003: PPUSH
12004: LD_INT 2
12006: PPUSH
12007: CALL_OW 12
12011: ARRAY
12012: PPUSH
12013: CALL_OW 185
// AddComConstruct ( amfab2 , 5 , 3 , 2 , [ 7 , 5 ] [ Rand ( 1 , 2 ) ] ) ;
12017: LD_INT 51
12019: PPUSH
12020: LD_INT 5
12022: PPUSH
12023: LD_INT 3
12025: PPUSH
12026: LD_INT 2
12028: PPUSH
12029: LD_INT 7
12031: PUSH
12032: LD_INT 5
12034: PUSH
12035: EMPTY
12036: LIST
12037: LIST
12038: PUSH
12039: LD_INT 1
12041: PPUSH
12042: LD_INT 2
12044: PPUSH
12045: CALL_OW 12
12049: ARRAY
12050: PPUSH
12051: CALL_OW 185
// AddComConstruct ( amfab2 , 5 , 3 , 2 , [ 7 , 5 ] [ Rand ( 1 , 2 ) ] ) ;
12055: LD_INT 51
12057: PPUSH
12058: LD_INT 5
12060: PPUSH
12061: LD_INT 3
12063: PPUSH
12064: LD_INT 2
12066: PPUSH
12067: LD_INT 7
12069: PUSH
12070: LD_INT 5
12072: PUSH
12073: EMPTY
12074: LIST
12075: LIST
12076: PUSH
12077: LD_INT 1
12079: PPUSH
12080: LD_INT 2
12082: PPUSH
12083: CALL_OW 12
12087: ARRAY
12088: PPUSH
12089: CALL_OW 185
// AddComConstruct ( amfab2 , 5 , 3 , 2 , [ 7 , 5 ] [ Rand ( 1 , 2 ) ] ) ;
12093: LD_INT 51
12095: PPUSH
12096: LD_INT 5
12098: PPUSH
12099: LD_INT 3
12101: PPUSH
12102: LD_INT 2
12104: PPUSH
12105: LD_INT 7
12107: PUSH
12108: LD_INT 5
12110: PUSH
12111: EMPTY
12112: LIST
12113: LIST
12114: PUSH
12115: LD_INT 1
12117: PPUSH
12118: LD_INT 2
12120: PPUSH
12121: CALL_OW 12
12125: ARRAY
12126: PPUSH
12127: CALL_OW 185
// enable ;
12131: ENABLE
// end ;
12132: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , randomedColors [ 1 ] ] , [ f_type , unit_vehicle ] , [ f_lives , 250 ] ] ) >= 7 do
12133: LD_INT 22
12135: PUSH
12136: LD_EXP 41
12140: PUSH
12141: LD_INT 1
12143: ARRAY
12144: PUSH
12145: EMPTY
12146: LIST
12147: LIST
12148: PUSH
12149: LD_INT 21
12151: PUSH
12152: LD_INT 2
12154: PUSH
12155: EMPTY
12156: LIST
12157: LIST
12158: PUSH
12159: LD_INT 24
12161: PUSH
12162: LD_INT 250
12164: PUSH
12165: EMPTY
12166: LIST
12167: LIST
12168: PUSH
12169: EMPTY
12170: LIST
12171: LIST
12172: LIST
12173: PPUSH
12174: CALL_OW 69
12178: PUSH
12179: LD_INT 7
12181: GREATEREQUAL
12182: IFFALSE 12201
12184: GO 12186
12186: DISABLE
// begin EnemyVehicleAttack ( randomedColors [ 1 ] ) ;
12187: LD_EXP 41
12191: PUSH
12192: LD_INT 1
12194: ARRAY
12195: PPUSH
12196: CALL 7212 0 1
// enable ;
12200: ENABLE
// end ;
12201: END
// every 20 20$0 do var rnd ;
12202: GO 12204
12204: DISABLE
12205: LD_INT 0
12207: PPUSH
// begin rnd = [ AttackSpawn1 , AttackSpawn2 ] [ Rand ( 1 , 2 ) ] ;
12208: LD_ADDR_VAR 0 1
12212: PUSH
12213: LD_INT 4
12215: PUSH
12216: LD_INT 5
12218: PUSH
12219: EMPTY
12220: LIST
12221: LIST
12222: PUSH
12223: LD_INT 1
12225: PPUSH
12226: LD_INT 2
12228: PPUSH
12229: CALL_OW 12
12233: ARRAY
12234: ST_TO_ADDR
// RespawnAttackVehicle ( rnd , randomedColors [ 2 ] , 4 , difficulty_level , 1 , 3 , [ 3 , 3 ] , [ ] , [ ] , [ 9 , 10 , 6 , 7 ] , 1 ) ;
12235: LD_VAR 0 1
12239: PPUSH
12240: LD_EXP 41
12244: PUSH
12245: LD_INT 2
12247: ARRAY
12248: PPUSH
12249: LD_INT 4
12251: PPUSH
12252: LD_EXP 38
12256: PPUSH
12257: LD_INT 1
12259: PPUSH
12260: LD_INT 3
12262: PPUSH
12263: LD_INT 3
12265: PUSH
12266: LD_INT 3
12268: PUSH
12269: EMPTY
12270: LIST
12271: LIST
12272: PPUSH
12273: EMPTY
12274: PPUSH
12275: EMPTY
12276: PPUSH
12277: LD_INT 9
12279: PUSH
12280: LD_INT 10
12282: PUSH
12283: LD_INT 6
12285: PUSH
12286: LD_INT 7
12288: PUSH
12289: EMPTY
12290: LIST
12291: LIST
12292: LIST
12293: LIST
12294: PPUSH
12295: LD_INT 1
12297: PPUSH
12298: CALL 7536 0 11
// enable ;
12302: ENABLE
// end ;
12303: PPOPN 1
12305: END
// every 20 20$0 do var rnd ;
12306: GO 12308
12308: DISABLE
12309: LD_INT 0
12311: PPUSH
// begin rnd = [ AttackSpawn1 , AttackSpawn2 ] [ Rand ( 1 , 2 ) ] ;
12312: LD_ADDR_VAR 0 1
12316: PUSH
12317: LD_INT 4
12319: PUSH
12320: LD_INT 5
12322: PUSH
12323: EMPTY
12324: LIST
12325: LIST
12326: PUSH
12327: LD_INT 1
12329: PPUSH
12330: LD_INT 2
12332: PPUSH
12333: CALL_OW 12
12337: ARRAY
12338: ST_TO_ADDR
// RespawnAttackInfantry ( randomedColors [ 2 ] , 1 , difficulty_level , 2 , 0 , 0 , 0 , difficulty_level , rnd , rnd , 1 ) ;
12339: LD_EXP 41
12343: PUSH
12344: LD_INT 2
12346: ARRAY
12347: PPUSH
12348: LD_INT 1
12350: PPUSH
12351: LD_EXP 38
12355: PPUSH
12356: LD_INT 2
12358: PPUSH
12359: LD_INT 0
12361: PPUSH
12362: LD_INT 0
12364: PPUSH
12365: LD_INT 0
12367: PPUSH
12368: LD_EXP 38
12372: PPUSH
12373: LD_VAR 0 1
12377: PPUSH
12378: LD_VAR 0 1
12382: PPUSH
12383: LD_INT 1
12385: PPUSH
12386: CALL 9231 0 11
// enable ;
12390: ENABLE
// end ;
12391: PPOPN 1
12393: END
